it seems that creating these modules (especially the booleandifference of all the cylinders) takes up a darn lot of memory so I had to just do the first layer of cylinders, cut that section, array down 8 times then rotate as necessary. Even then I didn't have enough computational power to union them afterwards.
Rage against the machine.