Stratosphere can run on a single machine, even in a single Java Virtual Machine. This allows users to test and debug Stratosphere programs (plans) locally.
If you are developing your program in a Maven project, you have to add the stratosphere-clients
module using this dependency:
<dependency>
<groupId>eu.stratosphere</groupId>
<artifactId>stratosphere-clients</artifactId>
<version>0.4</version>
</dependency>
The following code shows how you would use the LocalExecutor
with the Wordcount example:
public static void main(String[] args) throws Exception {
WordCount wc = new WordCount();
Plan plan = wc.getPlan(args);
LocalExecutor.execute(plan);
}
If you have added this code to your program class, you can use the "Run" button of your IDE to execute the plan locally using Stratosphere.
If you are running Stratosphere programs with the LocalExecutor
from your IDE, you can also use it to debug your plan!
You can either use System.out.println()
to write out some internal variables or you can use the debugger. So it is possible to set breakpoints within map()
, reduce()
and all the other methods.
The execute()
method returns a JobExecutionResult
object which contains the program runtime and the accumulator results.
Limitations of the LocalExecutor
:
hdfs://
files. (We suggest to use file://
for local files.)Stratosphere also offers a LocalDistributedExecutor
which starts multiple TaskManagers within one JVM. The standard LocalExecutor
starts one JobManager and one TaskManager in one JVM.
With the LocalDistributedExecutor
you can define the number of TaskManagers to start.
public static void main(String[] args) throws Exception {
WordCount wc = new WordCount();
Plan plan = wc.getPlan(args);
LocalDistributedExecutor lde = new LocalDistributedExecutor();
lde.startNephele(2); // start two TaskManagers
lde.run(plan);
}
Pass the number of TaskManagers to the method LocalDistributedExecutor.startNephele(int)