.. _productionizing-h2o: Productionizing H2O =================== (Note: This section is a work in progress.) About POJOs and MOJOs --------------------- H2O allows you to convert the models you have built to either a `Plain Old Java Object `__ (POJO) or a Model ObJect, Optimized (MOJO). H2O-generated MOJO and POJO models are intended to be easily embeddable in any Java environment. The only compilation and runtime dependency for a generated model is the ``h2o-genmodel.jar`` file produced as the build output of these packages. This file is a library that supports scoring. For POJOs, it contains the base classes from which the POJO is derived from. (You can see "extends GenModel" in a pojo class. The GenModel class is part of this library.) For MOJOs, it also contains the required readers and interpreters. The ``h2o-genmodel.jar`` file is required when POJO/MOJO models are deployed to production. Users can refer to the following Quick Start files for more information about generating POJOs and MOJOs: - `POJO Quick Start `__ - `MOJO Quick Start `__ **Notes**: - MOJOs are supported for Deep Learning, DRF, GBM, GLM, GLRM, K-Means, SVM, Word2vec, and XGBoost models only. - POJOs are not supported for XGBoost. Developers can refer to the the `POJO and MOJO Model Javadoc `__. Example Design Patterns ----------------------- Here is a collection of example design patterns for how to productionize H2O. .. _app-consumer-loan: Consumer loan application ~~~~~~~~~~~~~~~~~~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name Jetty servlet Example training language R Example training data source CSV file Example scoring data source User input to Javascript application running in browser Scoring environment REST API service provided by Jetty servlet Scoring engine H2O POJO Scoring latency SLA Real-time ================================================== =========================================================== ========= ================================================================================================== Resource Location ========= ================================================================================================== Git repos https://github.com/h2oai/app-consumer-loan Slides http://docs.h2o.ai/h2o-tutorials/latest-stable/tutorials/building-a-smarter-application/index.html Videos http://library.fora.tv/2015/11/09/building_a_smart_application_hands_on_tom ========= ================================================================================================== Craigslist application ~~~~~~~~~~~~~~~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name Sparkling water streaming Example training language Scala Example training data source CSV file Example scoring data source User input to Javascript application running in browser Scoring engine H2O cluster Scoring latency SLA Real-time ================================================== =========================================================== ========= ================================================================================================== Resource Location ========= ================================================================================================== Git repos https://github.com/h2oai/app-ask-craig Blogs http://blog.h2o.ai/2015/06/ask-craig-sparkling-water/ http://blog.h2o.ai/2015/07/ask-craig-sparkling-water-2/ Slides http://www.slideshare.net/0xdata/sparkling-water-ask-craig http://www.slideshare.net/0xdata/sparkling-water-applications-meetup-072115 ========= ================================================================================================== Malicious domain application ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name AWS Lambda Example training language Python Example training data source CSV file Example scoring data source User input to Javascript application running in browser Scoring environment AWS Lambda REST API endpoint Scoring engine H2O POJO Scoring latency SLA Real-time ================================================== =========================================================== ========= ================================================================================================== Resource Location ========= ================================================================================================== Git repos https://github.com/h2oai/app-malicious-domains Slides https://github.com/h2oai/h2o-meetups/tree/master/2016_05_03_H2O_Open_Tour_Chicago_Application Videos http://library.fora.tv/2016/05/03/design_patterns_for_smart_applications_and_data_products ========= ================================================================================================== Storm bolt ~~~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name Storm bolt Example training language R Example training data source CSV file Example scoring data source Storm spout Scoring environment POJO embedded in a Storm bolt Scoring engine H2O POJO Scoring latency SLA Real-time ================================================== =========================================================== ========= ================================================================================================== Resource Location ========= ================================================================================================== Git repos https://github.com/h2oai/h2o-tutorials/tree/master/tutorials/streaming/storm Tutorials http://docs.h2o.ai/h2o-tutorials/latest-stable/tutorials/streaming/storm/index.html ========= ================================================================================================== Invoking POJO directly in R ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name POJO in R Example training language R Example training data source (Need example) Example scoring data source (Need example) Scoring environment R Scoring engine H2O POJO Scoring latency SLA Batch ================================================== =========================================================== Hive UDF ~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name Hive UDF Example training language R Example training data source HDFS directory with hive part files output by a SELECT Example scoring data source Hive Scoring environment Hive SELECT query (parallel MapReduce) running UDF Scoring engine H2O POJO Scoring latency SLA Batch ================================================== =========================================================== ============= ================================================================================================== Resource Location ============= ================================================================================================== Git repos https://github.com/h2oai/h2o-tutorials/tree/master/tutorials/hive_udf_template POJO Tutorial http://docs.h2o.ai/h2o-tutorials/latest-stable/tutorials/hive_udf_template/hive_udf_pojo_template/index.html MOJO Tutorial http://docs.h2o.ai/h2o-tutorials/latest-stable/tutorials/hive_udf_template/hive_udf_mojo_template/index.html ============= ================================================================================================== MOJO as a JAR Resource ~~~~~~~~~~~~~~~~~~~~~~ ================================================== ============================================================ Characteristic Value ================================================== ============================================================ Pattern name MOJO JAR Example training language R Example training data source Iris Example scoring data source Single Row Scoring environment Portable Scoring engine H2O MOJO Scoring latency SLA Real-time example, but can be adapted (use in Hive UDF etc.) ================================================== ============================================================ ========= =================================================================================================== Resource Location ========= =================================================================================================== Git repos https://github.com/h2oai/h2o-tutorials/tree/master/tutorials/mojo-resource ========= =================================================================================================== Steam Scoring Server from H2O.ai ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ================================================== =========================================================== Characteristic Value ================================================== =========================================================== Pattern name Steam Scoring data source REST API client Scoring environment Steam scoring server Scoring engine H2O POJO Scoring latency SLA Real-time ================================================== =========================================================== ========= ================================================================================================== Resource Location ========= ================================================================================================== Web sites http://www.h2o.ai/steam/ ========= ================================================================================================== Additional Resources -------------------- * `H2O Generated POJO Model javadoc `_ * `H2O Open Tour 2016 New York City: Ways to Productionize H2O `_