The NameNode and JournalNode (and ZKFC) can all run on the same machine. However, they get their heap settings from HADOOP_HEAPSIZE/JAVA_HEAP_MAX. There are scenarios where the NameNode process should have different Java memory requirements than the JournalNode and ZKFC (e.g. if the machine has 10 GB of RAM, and I want the NameNode process to have 8 GB max).
HADOOP_(.*)_OPTS variables exist for these processes and can be used to add the Xms and Xmx tags, but because of how the default for JAVA_HEAP_MAX is set, it will always add '-Xmx1000m' to the final call to start up the NameNode/JournalNode/ZKFC process, resulting in two different Java heap settings (e.g. -Xmx1000m and -Xmx8g is used when starting the NameNode).
Note: HADOOP_HEAPSIZE is deprecated according to