Does it act like a Spark client and communicate over the normal Spark port numbers or is it all REST?
Which ports need to be opened in the firewall in the following flow?
Zeppelin <-> Livy Client <-> Livy Server <-> |-Firewall-| <-> Spark Cluster
Livy is a Rest server that acts as a Spark client. So you need to open nothing more than normal spark ports, listed here.
I would very highly recommend going over slide 14-31 on this link. These are just images so it should be easy and simple to go over this but it will give you a better understanding of Livy and will give you confidence in what you are trying to do.