/coflow

Application aware network QoS

Primary LanguageJava

Coflow Framework

Coflow scheduling in Java.

Dependency

Note that with the all-in-one jar, there is no need to specify the dependencies manually.

  • Scala 2.10
  • Akka 2.3.14 (with netty 3.8.0.Final and protobuf-java 2.5.0)
  • Javassist 3.20
  • Netty 4 (For running example)

This dependencies is compatible with Hadoop 2.7.1 and Spark 1.6.

Build

Require Gradle to build.

$ git clone https://github.com/byronyi/coflow
$ cd coflow
$ gradle jar # for compile-time dependency
$ gradle shadowJar # for runtime linking and all its dependencies

Find the built library (*.jar) in core/build/libs.

Usage

Just add -javaagent:/path/to/coflow-{version}-all.jar to your Java virtual machine start up options so you can use the library.

In the client, use coflow.CoflowChannel.register(localAddress, remoteAddress, coflowId) to register you coflow. Then the TCP stream of this local and remote address will be scheduled by the coflow framework!

See example/main/java/coflow/example/Client.java for detailed example.

How to Run Example

Open four terminals.

In the first terminal, start the coflow master.

java -cp core/build/libs/coflow-0.0.1-all.jar coflow.CoflowMaster

In the second terminal, start the coflow slave.

java -cp core/build/libs/coflow-0.0.1-all.jar coflow.CoflowSlave

In the third one, open a dummy echo server without coflow support.

gradle runServer

In the final termial, open the client to echo server with coflow support.

gradle runClient