Sign inSign up

cloudsuite3/in-memory-analytics

By cloudsuite3

•Updated about 5 years ago

In-Memory Analytics benchmark of CloudSuite3

Image
0

1.0K

cloudsuite3/in-memory-analytics repository overview

⁠In-Memory Analytics

Pulls on DockerHub Stars on DockerHub

This benchmark uses Apache Spark and runs a collaborative filtering algorithm in-memory on a dataset of user-movie ratings. The metric of interest is the time in seconds of computing movie recommendations.

The explosion of accessible human-generated information necessitates automated analytical processing to cluster, classify, and filter this information. Recommender systems are a subclass of information filtering system that seek to predict the 'rating' or 'preference' that a user would give to an item. Recommender systems have become extremely common in recent years, and are applied in a variety of applications. The most popular ones are movies, music, news, books, research articles, search queries, social tags, and products in general. Because these applications suffer from I/O operations, nowadays, most of them are running in memory. This benchmark runs the alternating least squares (ALS) algorithm which is provided by Spark MLlib.

⁠Getting the Image

Current version of the benchmark is 3.0. To obtain the image:

$ docker pull cloudsuite3/in-memory-analytics
⁠Datasets

The benchmark uses user-movie ratings datasets provided by Movielens. To get the dataset image:

$ docker pull cloudsuite3/movielens-dataset

More information about the dataset is available at cloudsuite3/movielens-dataset⁠.

⁠Running the Benchmark

The benchmark runs the ALS algorithm on Spark through the spark-submit script distributed with Spark. It takes two arguments: the dataset to use for training, and the personal ratings file to give recommendations for. Any remaining arguments are passed to spark-submit.

The cloudsuite3/movielens-dataset image has two datasets (one small and one large), and a sample personal ratings file.

To run a benchmark with the small dataset and the provided personal ratings file:

$ docker create --name data cloudsuite3/movielens-dataset
$ docker run --rm --volumes-from data cloudsuite3/in-memory-analytics \
    /data/ml-latest-small /data/myratings.csv
⁠Tweaking the Benchmark

Any arguments after the two mandatory ones are passed to spark-submit and can be used to tweak execution. For example, to ensure that Spark has enough memory allocated to be able to execute the benchmark in-memory, supply it with --driver-memory and --executor-memory arguments:

$ docker run --rm --volumes-from data cloudsuite3/in-memory-analytics \
    /data/ml-latest /data/myratings.csv \
    --driver-memory 2g --executor-memory 2g
⁠Multi-node deployment

This section explains how to run the benchmark using multiple Spark workers (each running in a Docker container) that can be spread across multiple nodes in a cluster. For more information on running Spark with Docker look at cloudsuite3/spark⁠.

First, create a dataset image on every physical node where Spark workers will be running.

$ docker create --name data cloudsuite3/movielens-dataset

Then, create dedicated network for spark workers:

$ docker network create spark-net

Start Spark master and Spark workers. They should all run within the same Docker network, which we call spark-net here. The workers get access to the datasets with --volumes-from data.

$ docker run -dP --net spark-net --hostname spark-master --name spark-master cloudsuite3/spark master
$ docker run -dP --net spark-net --volumes-from data --name spark-worker-01 cloudsuite3/spark worker \
    spark://spark-master:7077
$ docker run -dP --net spark-net --volumes-from data --name spark-worker-02 cloudsuite3/spark worker \
    spark://spark-master:7077
$ ...

Finally, run the benchmark as the client to the Spark master:

$ docker run --rm --net spark-net --volumes-from data cloudsuite3/in-memory-analytics \
    /data/ml-latest-small /data/myratings.csv --master spark://spark-master:7077

Tag summary

Content type

Image

Digest

Size

318.3 MB

Last updated

about 5 years ago

docker pull cloudsuite3/in-memory-analytics