Posts

How to install OpenMPI-Java

I have been trying out message passing frameworks for Java that can be used in HPC clusters. In this blog, I’m trying to provide installation instructions to quickly setup and try out Open MPI Java in a Linux environment. Pre-Requests: Build essentials gcc Installation Steps: Download OpenMPI 1.8   $wget http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.1.tar.gz Create a directory which you want to install openmpi             $mkdir /home/ charith /software/ openmpi -build     3. Extract downloaded gzipped file and change into the extracted directory              $tar -xvvzf openmpi-1.8.1.tar.gz            $cd openmpi -1.8.1     4. Configure the build environment with java enabled, using the following command           $ . /configure --enable-mpi- java --with- jdk -bindir="path to java bin directory " - -wi th- jdk -headers="path to the java directroy which have jni . h" --prefix="Pat

GoFFish : A Sub-Graph Centric Framework For Large Scale Graph Processing

It's been a long time since my last blog post. I wanted to write this blog for some time, but never got a chance to compete. Last year I was a part of a team worked on building a platform to perform  large scale distributed graph processing: GoFFish . In this blog, I am trying to give a small overview about GoFFish and its programming model. After the Google MapReduce paper and induction of Hadoop there was a search for simple programming models and analytics tools for big data processing. Graph structured data takes over a significant portion of large scale data we are seeing present day. I would say any big data problem worth looking at are graph related. :) Map Reduce model only works well with data with minimal interdependencies. Where graph structured data occupies the complete opposite end of spectrum .   Google pregel paper introduced a new simple programming model for graph processing, addressing this shortcomings of Hadoop. It's generally known a

Fixing the black screen issue in Linux mint 12 after installing cinnamon

I've been using Linux mint for some time now. Today i had to face a issue after installing Cinnamon in my machine. Thought of writing this short blog to keep track of the fix i did. I had Nvidia drivers installed in my laptop and it was working smoothly.After rebooting the machine after installing Cinnamon it gave me a back screen. It was smiler to the behavior explained in this link . I tried following the instructions given in that link but could not get it fixed. But after adding parameter nouveau.modeset=0 to grab startup command as explained in the link  I was able to start up a commandline (by pressing alt+F2 when i get a cursor in the back screen ) Following are the steps i followed after that remove cinnamon nvidia-current and nvidia-settings ($sudo apt-get purge cinnamon nvidia-current nvidia-settings ) Move /etc/X11/xorg.conf to /etc/X11/xorg.conf.back (sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.back) Reboot ($sudo reboot) (This will got to the login  screen

Another message redelivery pattern with WSO2 ESB

Image
In the articles Implementing Store and Forward Messaging Patterns With WSO2ESB Part 1 and Implementing Store and Forward Messaging Patterns With WSO2ESB Part 2 . I have introduced WSO2 Message Processors and Message Stores and explained how to implement store and forward messaging patterns with them. In this blog post i ' m trying to show how to implement a redelivery messaging pattern i recently implemented. actually in the article Implementing Store and Forward Messaging Patterns With WSO2ESB Part 2   i have described how to implement  a redelivery pattern with Message Forwarding processor. But in this post i'm going to show how to implement another redelivery pattern which can’t be achieved with Message Forwarding processor. Following is the requirement : Client invokes a Backend service through a ESB.  If 1st invocation is successful send the response back to client and if service is not available send a fault message back.  In a failure re try to deliver the mes

Distributed Coordination with Apache Zookeeper - A Java Approch

Image
Apache Zookeeper is an Open source framework which can be used for distributed coordination. To understand what Apache zookeeper does we will have to go back to the Concurrent Programming class we did at university. Think how we tried to do coordination among different Threads or processors We used global variables most of the times. Actually there are two ways to achieve coordination among processors 1) Message Passing 2) Shared Memory approach. Now lets bring that problem to the next level. How to coordinate threads /processors that are running in different machines/nodes in a distributed system. The above two approaches are still the solution for this level as well. ( Yes its a pattern in science :) ) There are lot of messaging frameworks and distributed shared memory abstractions available which can be used to achieve distributed coordination. I'd like to think Apache zookeeper as a Coordination framework which gives a shared memory abstraction to the distributed processors

Understanding and Terminating the Enemy- Deadlocks

Image
Concurrent programming is hard. And its even hard when you do it badly. Deadlocks are one of the classical enemies you must try to avoid when writing a concurrent program. Because if you face any deadlocks in your program its really hard to find and fix them. In this post i’m trying to explain what deadlocks are and I’ll explain how to debug a program to find and fix deadlocks. There are different definitions for deadlock personally i prefer the following definition since i feel its the perfect one. “A set of processes is deadlocked if each process in the set is waiting for an event that only another process in the set can cause (including itself)” [1] There are four necessary conditions to be there in a program if its leading to a deadlock. Which means if a program ended up in a deadlock state it that program will satisfy following four conditions. Mutual exclusion : The resources that must involve in the problem must only have mutually exclusive access. Which means o

WSO2 Enterprise Service Bus 4.0.0 Released!

The WSO2 ESB team is pleased to announce the release of version 4.0.0 of the Open Source Enterprise Service Bus (ESB). WSO2 ESB is a fast, lightweight and user friendly open source Enterprise Service Bus (ESB) distributed under the Apache Software License v2.0 . WSO2 ESB allows system administrators and developers to easily configure message routing, intermediation, transformation, logging, task scheduling, fail over routing and load balancing. It also supports transport switching, eventing, rule based mediation and priority based mediation for advanced integration requirements. The ESB runtime is designed to be completely asynchronous, non-blocking and streaming based on the Apache Synapse mediation engine. WSO2 ESB 4.0.0 is developed on top of the revolutionary WSO2 Carbon platform (Middleware a' la carte), an OSGi based framework that provides seamless modularity to your SOA via componentization. This release also contains many new features and a range of optional components (