The Apache Mahout PMC is pleased to announce the release of Mahout 0.10.1.
Mahout's goal is to create an environment for quickly creating machine learning applications that scale and run on the highest performance parallel computation engines available. Mahout comprises an interactive environment and library that supports generalized scalable linear algebra and includes many modern machine learning algorithms.
The Mahout Math environment we call “Samsara” for its symbol of universal renewal. It reflects a fundamental rethinking of how scalable machine learning algorithms are built and customized. Mahout-Samsara is here to help people create their own math while providing some off-the-shelf algorithm implementations. At its base are general linear algebra and statistical operations along with the data structures to support them. It’s written in Scala with Mahout-specific extensions, and runs most fully on Spark.
To get started with Apache Mahout 0.10.1, download the release artifacts and signatures from http://www.apache.org/dist/mahout/0.10.1/.
Many thanks to the contributors and committers who were part of this release. Please see below for the Release Highlights.
RELEASE HIGHLIGHTS
This is an incremental minor release over Mahout 0.10.0 meant to fix a few bugs and upgrade to Spark 1.2.2 or less.
Mahout 0.10.1
This release fixes a major memory usage bug in co-occurrence analysis used by the driver spark-itemsimilarity MAHOUT-1707. This will now require far less memory in the executor.
Support Spark 1.2.2 or less - due to a bug in Spark 1.2+ in the JavaSerializer (SPARK-6069) we removed the use of Guava from any code executed in Spark Executors. To do this we created a Scala Collections based BiMap so any example code showing how to use the old Guava collections is obsolete.
Some minor fixes to Mahout-Samsara QR Decomposition and matrix ops.
Trim down packages size to < 200MB - MAHOUT-1704.
Minor testing indicates binary compatibility with Spark 1.3 except for the Mahout Shell, which does not run.
STATS
A total of 9 separate JIRA issues are addressed in this release [2] with 5 bugfixes.
Scope of Mahout 0.10.2 ~ targeted for June 28, 2015
In-core transpose view rewrites. Modifiable transpose views (for (col <- a.t) col := 5).
Matrix structure flavor additions. (understand general matrix structure and stride direction).
%*% optimization based on matrix flavors.
In-core ::= sparse assignment functions.
Assign := optimization (do proper traversal based on matrix flavors, similarly to %*%).
Adding in-place elementwise functional assignment (e.g. mxA := exp _, mxA ::= exp _).
Distributed and in-core version of simple elementwise analogues of scala.math._. for example, for log(x) the convention is dlog(drm), mlog(mx), vlog(vec). Unfortunately we cannot overload these functions over what is done in scala.math, i.e. scala would not allow log(mx) or log(drm) and log(Double) at the same time, mainly because they are being defined in different packages.
Distributed performance bug fixes. This relates mostly to (a) matrix multiplication deficiencies, and (b) handling parallelism.
Distributed allreduceBlock predicate.
Distributed optimizer operators for elementwise functions. Rewrites recognizing e.g. 1+ drmX * dexp(drmX) as a single fused elementwise physical operator.
More cbind, rbind flavors (e.g. 1 cbind mxX, 1 cbind drmX or the other way around).
Mahout 0.11.0-snapshot (ongoing, but available)
Support for Spark 1.3 sequence file write.
Spark Shell (timing TBD).
First release that would see integration of Apache Mahout with Apache Flink as a backend.
GETTING STARTED
Download the release artifacts and signatures at http://www.apache.org/dist/mahout/0.10.1/ The examples directory contains several working examples of the core functionality available in Mahout. These can be run via scripts in the examples/bin directory. Most examples do not need a Hadoop cluster in order to run.
FUTURE PLANS
We will continue bug fixes and enhancements on the 0.10.x branch, which will remain dependent on Spark 1.2.x. Support for Spark 1.3 will be in the master branch reflecting Mahout-0.11.0-SNAPSHOT. To see progress on this branch look here: https://github.com/apache/mahout/commits/master. As of this writing it is not ready yet to build for Spark 1.3.
Integration with Apache Flink is in the works in collaboration with TU Berlin and Data Artisans to add Flink as the 3rd execution engine to Mahout. This would be in addition to existing Apache Spark and H2O engines.
CONTRIBUTING
If you are interested in contributing, please see our How to Contribute[3] page or contact us via email at [hidden email].
CREDITS
As with any release, we wish to thank all of the users and contributors to Mahout. Please see the CHANGELOG [1] and JIRA Release Notes [2] for individual credits, as there are too many to list here.
[1] https://github.com/apache/mahout/blob/mahout-0.10.x/CHANGELOG
[2] https://issues.apache.org/jira/browse/MAHOUT-1707?jql=project%20%3D%20MAHOUT%20AND%20status%20in%20%28Resolved%2C%20closed%29%20AND%20%28fixVersion%20%3D%200.10.1%29
[3] http://mahout.apache.org/developers/how-to-contribute.html