Dynamic HBase Coprocessors Using Clojure

Full Featured (30 min.)

HBase coprocessors move data aggregation from the client to the database Server. Coprocessors provide major performance advantages, but programming coprocessors is challenging because the development cycle for coprocessors is slow, tedious and somewhat dangerous. Our solution is to embed a Clojure interpreter inside an HBase coprocessor and to provide Clojure code for aggregations with each query. Our coprocessor then dynamically compiles the aggregations for each query allowing for rapid development and testing. Extension of this approach to other JVM languages like JRuby or by using GraalVM should be possible. Code and examples are available on GitHub.