H2O's Sparkling Water earned certification from both Databricks and Cloudera before its public announcement at Strata San Jose.
Cloudera's certification testing of Sparkling Water covered compatibility with Cloudera's bundled Spark, Kerberos security, and stability on standalone and YARN deployments.
Cloudera's Sparkling Water certification required upgrading from CDH 5.3.0 to CDH 5.3.1 to resolve a missing class path error in joda time jar files.
Sparkling Water users can avoid port collisions on a Kerberized Cloudera cluster by setting the spark.ext.h2o.port.base configuration at launch.
H2O tested Sparkling Water on Kerberos secured Cloudera clusters by first initializing a Kerberos ticket before running its certification script.
Last month before the H2O.ai team publicly announced Sparkling Water at Strata San Jose we made sure that the product was backed and certified by some major partners. This includes approval from databricks itself as well as Cloudera.
Integration Testing for Cloudera
For Cloudera, testing was mainly geared toward deployment and sustainablility of a Sparkling Water cluster. Some key points that came up during the certification process include:
Compability. Because Spark is bundled with Cloudera with each release and the user can choose to install either Standalone Spark or a Spark on Yarn through the Cloudera manager, the test must use the Spark installation that comes bundled with Cloudera. Sparkling Water was also tested on Standalone Spark as well as one launched with Yarn:bash
# SPARK_HOME set to Cloudera bundled SparkexportSPARK_HOME="/opt/cloudera/parcels/CDH-5.3.1-1.cdh5.3.1.p0.5/lib/spark"exportMASTER="spark://mr-0xd1-precise1.0xdata.loc:7077"cd$SPARK_INSTALLATION# Run test script with standalone Sparkling Waterbin/sparkling-shell --num-executors8 --executor-memory 5g -icloudera_cert.scala# Run test script with Sparkling Water launched on YARNbin/sparkling-shell --num-executors8 --executor-memory 5g --masteryarn -icloudera_cert.scala
The cloudera_cert.scala script included a test of import and parse of data, moving data between Spark and H2O, using Spark’s SQLContext and H2O’s Algorithms.
Security. Sparkling water had to be able to launch and run on a secure cluster. An authentication layer was added by utilizing Kerberos, an authenication server, on the Hadoop servers, and tests that ran on the unsecured servers had to pass on Kerberized servers. To run Sparkling Shell on Kerberos, the user will first initialize the kerberos ticket and then run the scala script with Sparkling Shell:bash
Missing Class Paths. Sparkling water had to be able to run with CDH5.3, and to accomplish this the cluster had to be upgraded from the then-current version of Cloudera from 5.3.0-1.cdh5.3.0.p0.30 to 5.3.1-1.cdh5.3.1.p0.5. Though it was only a minor release update this fixed any class path issues we found in the older version for joda jar files:plain
Port Collisions. At the moment if there is a port collision when H2O is launched from a Spark launched on Yarn, executors that can’t find an available port will kill itself and try to restart. H2O however cannot accept executor deaths and so when an executor dies so does the H2O cluster. One way to avoid a port collision for now is to specify the base port you want to launch H2O at by passing the configuration spark.ext.h2o.port.base during the launch process:bash