I have a topology(1 spout and 3 bolts) and 3 machines(1 nimbus and 2 worker nodes).Whether I want to run my topology on all 3 nodes or run on nimbus is enough?
Using multiple nodes allows you to distribute the load across the cluster, so definitely this should be beneficial to have multiple nodes instead of one.And also in case of a node failure the nimbus will be able to reassign the tasks to another machine. However it is possible to set up storm in a single node and everything can be run on a single machine.
Is it nimbus will take care of distributing the code to other nodes?
Yes
My spout will run on nimbus or any of the worker nodes
The slave nodes are responsible for running or executing the topology, they run a daemon called Supervisor
The 3 bolts are run on 3 separate nodes or run on same node? is it will take care by nimbus?
The distribution is taken care by the Nimbus (master node).Nimbus is responsible for distributing code around the cluster, assigning tasks to machines, and monitoring for failures.
How do we track processing of bolt in nodes?
Storm provides a web-based user interface that can optionally be launched on the master node (running the Nimbus daemon). The Storm UI provides a basic overview of the cluster state by showing cluster-level and topology-level diagnostics. The same can be lunched using the following commands
# cd /path/to/storm/install/dir
# bin/storm ui
By default it listen on the 8080 port and can be seen using the http://nimbus_host:8080/ url in your browser.
Is it any documentation available to understand the complete flow of processing a message in Storm?
the Storm Wiki page is a great place to learn and understand the working of storm. You can also follow the basic tutorial for more details