Advertisement
Guest User

Untitled

a guest
Sep 11th, 2015
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. import random
  2. import pprint
  3.  
  4. num_partitions = 4096
  5. max_cluster_size = 128
  6.  
  7. full_partition_map = [range(0, max_cluster_size) for _ in range(0, num_partitions)]
  8. map(random.shuffle, full_partition_map)
  9.  
  10. def make_map(nodes):
  11.     cluster_size = len(nodes)
  12.     partition_map = []
  13.     for row in full_partition_map:
  14.         row = filter(lambda i: i < cluster_size, row)
  15.         row = [nodes[i] for i in row]
  16.         row = filter(lambda n: n != None, row)[:replication_factor] # stable
  17.         partition_map.append(row)
  18.  
  19.     return partition_map
  20.  
  21. def compare_maps(map1, map2):
  22.     master_change = 0
  23.     replica_change = 0
  24.     for part1, part2 in zip(map1, map2):
  25.         if part1[0] != part2[0]:
  26.             master_change += 1
  27.  
  28.         for replica1, replica2 in zip(part1[1:], part2[1:]):
  29.             if replica1 != replica2:
  30.                 replica_change += 1
  31.  
  32.     print "Master Change: %d, Replica Change: %d, Total Change: %d"%(master_change, replica_change, master_change + replica_change)
  33.  
  34. init_nodes = range(100, 104)
  35. replication_factor = 1
  36.  
  37. print "Start: %s"%(init_nodes)
  38. initial_map = make_map(init_nodes)
  39.  
  40. add_node = init_nodes[:]
  41. add_node.append(104)
  42. print "\nAdding a node: %s"%(add_node)
  43. add_node_map = make_map(add_node)
  44. compare_maps(initial_map, add_node_map)
  45.  
  46. remove_node = init_nodes[:]
  47. removed = init_nodes[2]
  48. del remove_node[2]
  49. print "\nRemoved a node: %s"%(remove_node)
  50. remove_node_map = make_map(remove_node)
  51. compare_maps(initial_map, remove_node_map)
  52.  
  53. remove_node = init_nodes[:]
  54. removed = init_nodes[2]
  55. remove_node[2] = None
  56. print "\nReplace a node with None: %s"%(remove_node)
  57. remove_node_map = make_map(remove_node)
  58. compare_maps(initial_map, remove_node_map)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement