G cluster_0 Name Node cluster_1 Data Node cluster_2 Data Node cluster_3 Data Node f2 File2: B3 f1 File1: B1, B2 b11 Block 1 b12 Block 2 b23 Block 3 b21 Block 1 b32 Block 2 b33 Block 3
G cluster_0 Name Node cluster_3 Data Node 3 (Failed) cluster_1 Data Node 1 cluster_2 Data Node 2 f2 File2: B3 b32 Block 2 b12 Block 2 b21 Block 1 f1 File1: B1, B2 b33 Block 3 b12->b21 transfer b11 Block 1 b23 Block 3 b23->b11 transfer
G nn Name Node d1 Data Node 1 d1->nn Heartbeat d2 Data Node 2 d2->nn Heartbeat d3 Data Node 3 d3->nn Heartbeat
G cluster_0 Rack 1 cluster_1 Rack 2 i interconnect s1 Switch i->s1 s2 Switch i->s2 n1 Node 1 s1->n1 n2 Node 2 s1->n2 n3 Node 3 s2->n3 n4 Node 4 s2->n4
G cluster_1 Data Node 1 cluster_0 Name Node cluster_2 Data Node 2 b12 Block 2 b11 Block 1 f1 File1: B1, B2 f2 File2: B3 client Client f1->client metadata b23 Block 3 b21 Block 1 client->b12 read client->f1 client->b21 read
blockdiag seqdiag { Client => "Data Node 1" => "Data Node 2" [label = "setup", return =""]; Client => "Data Node 1" => "Data Node 2" [label = "block 1", return =""]; Client => "Data Node 1" => "Data Node 2" [label = "...", return =""]; Client => "Data Node 1" => "Data Node 2" [label = "block n", return =""]; Client => "Data Node 1" => "Data Node 2" [label = "close", return =""]; } Client Data Node 1 Data Node 2 setup setup block 1 block 1 ... ... block n block n close close