Code is attached.

Fetch is one request into single buffer of size 1GB (that is my claim,
anyway) which comprises the entire file.

File was previously pushed into crail via:
/usr/local/apache-crail-1.2-incubating/bin/crail fs -copyFromLocal
/root/G1.txt /

Fetch results:

[root@sgt-pepper ~]# java com.research.crail.Test
file.capacity=1073741824
ret=1.073741824E9
execution time 0.98

Which says it took about 1 sec. to fetch 1GB file from crail into my Test
app's memory.  All running in single CentOS 7 VM with 8GB memory and 2
CPUs, crail name and data daemons are each in their own docker container.

Comments?

Lou.
package com.research.crail;
import java.nio.ByteBuffer;

import org.apache.crail.CrailBuffer;
import org.apache.crail.CrailFile;
import org.apache.crail.CrailInputStream;
import org.apache.crail.CrailStore;
import org.apache.crail.conf.CrailConfiguration;
import org.apache.crail.memory.OffHeapBuffer;

public class Test {

	public static void main(String[] args) {
		try {
			CrailConfiguration conf = CrailConfiguration.createConfigurationFromFile();
			CrailStore store = CrailStore.newInstance(conf);
			String filename = "G1.txt";
			CrailFile file = store.lookup(filename).get().asFile();
			int capacity = (int) file.getCapacity();
			System.out.println("file.capacity"+"="+capacity);
			CrailBuffer buf = OffHeapBuffer.wrap(ByteBuffer.allocateDirect(capacity));
			CrailInputStream directStream = file.getDirectInputStream(file.getCapacity());
			long start = System.currentTimeMillis();
			double ret = (double) directStream.read(buf).get().getLen();
			long end = System.currentTimeMillis();
			double executionTime = ((double) (end - start)) / 1000.0;
			System.out.println("ret"+"="+ret);
			System.out.println("execution time " + executionTime);
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}

}

Reply via email to