cloudera - What happens when a query is fired by client in Impala? -
how client contact impalad deamon when query fired ? happens in background when client fires query has executed impala ?
take impala-shell example, impalashell python class extends cmd.cmd. user will:
1) connect ip:port
in shell, call do_connect(..)
, connect impala backend through thrift. , thrift client created self.imp_service = impalaservice.client(protocol)
2) select xxx table...
in shell, call do_select(...)
, self.imp_service.query(query)
called thrfit rpc.
3) rpc query executed on impalad side void impalaserver::query(queryhandle&, const query&)
:
- coordinator parse query , create fragmented ast, , assign each fragment set of hosts execute;
rpc calls issued in parallel each host each fragment.
parent fragment wait until child fragment done.
4) when fragments done, data shown on screen after fetch()
thrift call client side.
Comments
Post a Comment