- Yes, at least in small clusters those two should be running in the master node.
- Check answer 1. Master node can have also, for example, SecondaryNamenode and JobHistoryServer
- No, the slaves file is only on the master node. If you have the master node in the slaves file, it means that the master node acts also as a datanode. Especially in small clusters that's totally fine. The slaves file essentially tells which on nodes the datanode processes are started.
Slave nodes should only run DataNode and NodeManager. But this is all handled by Hadoop if the configurations are correct - you can just check which processes are running after starting the cluster from the master node. Master node basically takes care of everything and you "never" need to manually connect to the slaves for any configurations.
My answer is meant for small clusters, probably in bigger "real" clusters the server responsibilities are even more separated.