23. A method of executing a query in a HADOOP™ distributed computing cluster having multiple data nodes forming a peer-to-peer network for the query, each data node functioning as a peer in the peer-to-peer network and being capable of interacting with components of HADOOP™ cluster, each peer having an instance of a query engine running in memory, each instance of the query engine is configured to perform; the method comprising: receiving, by a one data node in the distributed computing cluster, a query; designating the one data node that receives the query as a coordinating data node; obtaining, by the coordinating data node and through a state store and a name node, (1) membership information regarding all query engine instances that are running in the cluster, and (2) location information regarding where data blocks relevant to the query are distributed among the plurality of data nodes, wherein the state store is separate from the data nodes; parsing the query to create fragments of the query based on data obtained from the state store and the name node; constructing a query plan based on the data obtained from the state store; distributing, by the coordinating data node and according to the query plan, the fragments of the query to data nodes in the distributed computing cluster that have data relevant to the query; receiving, from the data nodes having data relevant to the query, intermediate results corresponding to execution of the fragments of the query; and generating a final result based on the intermediate results for a client.
23. A method of executing a query in a HADOOP™ distributed computing cluster having multiple data nodes forming a peer-to-peer network for the query, each data node functioning as a peer in the peer-to-peer network and being capable of interacting with components of HADOOP™ cluster, each peer having an instance of a query engine running in memory, each instance of the query engine is configured to perform; the method comprising: receiving, by a one data node in the distributed computing cluster, a query; designating the one data node that receives the query as a coordinating data node; obtaining, by the coordinating data node and through a state store and a name node, (1) membership information regarding all query engine instances that are running in the cluster, and (2) location information regarding where data blocks relevant to the query are distributed among the plurality of data nodes, wherein the state store is separate from the data nodes; parsing the query to create fragments of the query based on data obtained from the state store and the name node; constructing a query plan based on the data obtained from the state store; distributing, by the coordinating data node and according to the query plan, the fragments of the query to data nodes in the distributed computing cluster that have data relevant to the query; receiving, from the data nodes having data relevant to the query, intermediate results corresponding to execution of the fragments of the query; and generating a final result based on the intermediate results for a client. 36. The method of claim 23 , further comprising: sending, by the coordinating data node, the results to the client.