5. SubPlan
T: TableScanNode
A: AggregationNode
E: ExchangeNode
E
E
A(FINAL)
A(FINAL)
Plan
T
JoinNode
T
OutputNode
A
A
SubPlan
SubPlan
T
JoinNode
T
A(PARTIAL)
A(PARTIAL)
SinkNode
SinkNode
OutputNode
11. Split
Split
Split
Split
Split
Split
Split
Is the data
ready?
Register a
callback
N
When the data of this
Split is ready, put the
Split back.
Y
Fetch one Page
Execute
Operator
Y
Has next
Operator?
N
N
TaskExecutor
Is the Split
done?
Thread number = core nubmer * 4
Y
Y
N
Time's up?
16. NodeSelector.selectNode
• Select acceptable nodes (as least 10 nodes by
default)
– Nodes has the same address
– If not enough, add nodes in the same rack
– If not enough, randomly select nodes in other
racks
• Select the node with the smallest number of
assignments (pending tasks)
17. Output
• Only has SELETE statement
– Currently query results are streamed to the client
A SubPlan will to convert by LocalExecutionPlanner to LocalExecutionPlan which has a operator sequence.
HashJoinOperator andHashBuilderOperator is connected by SourceHash which contains the output of HashBuilderOperator.
You can image Slice is a byte array. The Slice size is the array size. The Block size is the Slice size. The Page size is sum of all the Block sizes.
Every Split is only allowed to execute 1s by default. When the time is up, the split will be put back to the queue.
RecordSetDataStreamProvider is a subclass of ConnectorDataStreamProvider.
When DiscoveryNodeManager receives any Node information query, it will check if the cache is expired (5 seconds).If so, it will ask the ServiceSelectorto fetch the active nodes and drop the failure nodes.ServiceSelector will fetch the new node list from the Discovery Server every 10s by default.There is a thread in HeartbeatFailureDetector which will send the heartbeat to every active node 500ms by default.