I'm seen this work demoed. It's awesome, especially for applications
that are not very predictable.
Avery
On 6/4/14, 11:00 AM, Semih Salihoglu wrote:
Hi Giraph Users,
I wanted to introduce to you Graft, a project that some of us at
Stanford have built over the last quarter. If you are a Giraph user,
who ran into an annoying bug in which the code was throwing an
exception or resulting in incorrect looking messages or vertex values
(e.g. NaNs or NullPointerExceptions) and you had put in println
statements into your compute() functions, and then inspect logs of
Hadoop workers for debugging purposes, you should read on. You might
find Graft very useful.
In a nutshell, Graft is based on the idea of /capturing /the contexts
under which a bug becomes noticeable (an exception is thrown or an
incorrect message is sent, or a vertex is assigned an incorrect value)
programmatically. The captured contexts can then be /visualized/
through a GUI. The contexts that a user thinks could be helpful for
catching the bug can then be /reproduced/ in a compilable program and
the user can then use his/her favorite IDE's debugger to do
step-by-step debugging into the context. For example, when a vertex
/v/ throws an exception, the user can reproduce the context under
which /v/ throws the exception and then use (say) Eclipse to do
step-by-step debugging to see exactly what lines were executed that
resulted in the exception being thrown.
On the testing side, Graft makes it easier to generate unit and
end-to-end tests by letting users curate small graphs through its
GUI's testing mode, and then generates code snippets which can be
copied and pasted into a JUnit test.
The project is still under development but interested users can start
using it. We have a wiki with documentation and instructions on how to
install and use Graft: https://github.com/semihsalihoglu/graft/wiki.
Since the project is under development, we'd highly appreciate users
to start using it and giving us direction on how to make it more
useful. Our emails are on the documentation page. We also encourage
interested developers to contribute to it if there are requested
features that we don't get to very quickly.
Just a small note: Graft works for the Giraph at trunk:
https://github.com/apache/giraph/tree/trunk. We do not support earlier
version. In particular your programs need to be written by extending
Computation and optionally the Master class, instead of the older
Vertex class.
Best,
semih