Getting Started

  1. Launch a cluster of VMs/bare-metal nodes, choose one of them as the client node and clone the repository in there.

git clone
cd skyhookdm/scripts/deploy/
  1. Execute the script to deploy a Ceph cluster on a set of nodes and also to mount CephFS on the client node. On the client node, execute:

./ mon1,mon2,mon3 osd1,osd2,osd3 mds1 mgr1 /dev/sdb 3

where mon1, mon2, osd1, etc. are the internal hostnames of the nodes. Similarly on CloudLab, you can execute,

./ node1,node2,node3 node4,node5,node6,node7 node1 node2 /dev/nvme0n1p4 3
  1. Build and install Arrow along with the SkyhookDM object class plugins.

./ osd1,osd2,osd3

This will build the plugins as shared libraries and deploy them to the OSD nodes. On CloudLab, you can do,

./ node4,node5,node6,node7
  1. Download an example Parquet file with NYC Taxi data.

  1. Write a sample dataset to the CephFS mount by replicating the 128MB Parquet file downloaded in the previous step.

./ [source file] [destination dir] [no. of copies] [stripe unit]

For example,

./ 128MB.uncompressed.parquet /mnt/cephfs/dataset 10 134217728

This will write 10 of ~128MB Parquet files to /mnt/cephfs/dataset using a CephFS stripe size of 128MB.

  1. Build and run the example client code.

g++ -std=c++17 ../ -larrow_skyhook -larrow_dataset -larrow -o example
export LD_LIBRARY_PATH=/usr/local/lib
./example file:///mnt/cephfs/dataset

You should get a stringified Arrow table as the output.