About

===============================================================================

This is a Java implementation of the CDVC framework, presented in "D. Rafailidis, S. Antaris and Y. Manolopoulos, Processing Massive Multimedia Content in the Cloud based on Image Descriptors’ Dimensions Value Cardinalities “[Experiments & Analysis Mini-Paper]”, PVLDB ". The source code reproduces the experiments described in our paper.

Datasets

===============================================================================

Our experimental evaluation was performed on two publicly available datasets of image descriptor vectors. We used the GIST-80M-348d dataset of the Tiny Image Collection and the SIFT-1B-128d of the TEXMEX collection, publicly available at http://horation.cs.nyu.edu/mit/tiny/data/index.html and http://corpus-texmex.irisa.fr, respectively. Each dataset file should contain an image descriptor vector per row and the dimensions of each descriptor should be comma separated.

Usage

===============================================================================

Our framework was implemented using the OpenStack Apis specifications in order to launch server instances and create containers and objects. The framework's components were implemented in Java and the experiments were conducted using the Nephelae Cloud Infrastructure of the laboratory for Internet Computing (LInC) of University of Cyprus (http://linc.ucy.ac.cy/index.php/infrastructure/63-nephelae-cloud-infrastructure). In our implementation, the HBase distributed data management system was used and the RabbitMQ service was applied for the queue services.

In our repository, we provide the source code of the proposed CDVC framework. In order to run our code, the following steps are required:

  1. install your certificates into the Cloud Infrastructure;

  2. create the HBase configuration which will be used by each of our framework’s components. The HBase configuration should be included in the HBaseInstance.java on each of the CDVCOpenstack components;

  3. create the RabbitMQ configuration. Similar to the HBase configuration, the RabbitMQ configuration should be included in the RabbitMQInstance on each of the CDVCOpenstack components;

  4. create the Openstack Deployment projects for each of our framework's components. Each component is deployed in the Openstack compute node;

  5. modify the numberOfDVCExtractorNodes variable in the CDVC_Scheduler component;

  6. modify the numberOfImageSorterNodes variable in the PriorityIndexer component according to the deployed instances of the Image Sorte instances;

  7. if the numberOfDVCExtractorNodes and numberOfImageSorterNodes variables are assigned as 0, then the sequential approach is executed.

We provide in our repository a CDVC_Initializer project which is the user interface of our framework. CDVC_Initializer should not deployed in the cloud. Since the framework's components are deployed in the cloud, you need to execute the CDVC_Initializer to run our experiments.