Hi everyone, Some of you might already know Green-Marl, Green-Marl compatibility was even mentioned as a new feature for Giraph 0.2, but for those who don't, let me give you a quick introduction.
Green-Marl is a domain-specific language tailored to graph algorithms. It has many features that makes it possible to write graph algorithms very concise and intuitive. For example, it has built-in constructs for graphs, node properties, and traversals. A more complete description is given here: http://ppl.stanford.edu/papers/asplos12_hong.pdf. Apart from the language, there is also a Green-Marl compiler that compiles the language to different targets. C++/OpenMP was initially supported, after which support for Stanford GPS (a Pregel-clone developed at Stanford) was added for a subset of the features in the Green-Marl language. The big advantage of using a language like Green-Marl is that it enables you to write implicitly parallel programs in an intuitive way with the compiler doing most of the heavy work such as generating the messaging, converting pull-based operation (remote reading) to push-based operations (message sending), etc. In the last few months I have worked on a few features in Giraph that enable Green-Marl to target Giraph as a back-end (namely GIRAPH-127, GIRAPH-192 and GIRAPH-216). Since these have all been merged, Green-Marl and Giraph should be compatible as of last week! Using Green-Marl with Giraph is very simple, as long as you have a working Hadoop/Giraph environment. Since the Green-Marl compiler is a source-to-source compiler, it is very easy to use it in an existing set-up. The steps to using Green-Marl are like this: 1. Download the Green-Marl compiler from https://github.com/stanford-ppl/Green-Marl, run make_dirs.sh in the top-level dir and run make in the src dir. A more detailed explanation is given in the Github readme. 2. Compile one of the examples (in the top-level directory) like this: bin/gm_comp -t=giraph apps/src/pagerank.gm 3. Move pagerank.java to the Giraph src directory or your own project, package it into a .jar and go! 4. Explore more examples, modify them and start writing your own Green-Marl is actively being worked on within Oracle Labs, new features are being added to the language (such as collection node properties) and support for these features will be added to the distributed back-ends in the near future. In case of questions or suggestions, please send us a message! Feedback is very much appreciated and people are more than welcome to contribute everything from small bugfixes to entire back-ends ;-) - Jan