First, some details on metrics:
The metrics "memory used" and "memory available" from YARN UI you mentioned indicates memory usage within YARN processes, not the hosts used by YARN's ResourceManagers.
Eg. you have 3 nodes in cluster, with more than 64 GB each (bc 64 * 3 < 214) say 128GB, however YARN is configured to use ~71 GB(214 / 3). (I suggest that figures are incorrect, but it's just an example). For each node all processes on it uses about 50% of RAM, however your application uses almost all RAM available for YARN on cluster.
Second:
It's totally ok to use as much as possible of memory of the cluster, unless your cluster suits your needs and you do not plan to do more load without cluster reconfiguration. One needs only to monitor actual hosts metrics underneath, because running JVMs also needs free host RAM for overhead, offheap storage and so on.
Third, suggestions on your case:
seems like your nodes are not very efficiently used (loaded). In common, 80% usage is what you want to achieve for you infrastructure (RAM, CPU, etc). So, you could consider to move to lesser nodes but with a bit more of them. Smaller nodes would end in less amount of data, higher parallelism and probably speed-up of processing for less money.