I would be very happy to be wrong about this but to the best of my knowledge there is no way to do orchestration like this with chef. Off the top of my head you could possibly set an attribute at the end of the run of each other recipe then have a guard at the start of your dependent recipe that checks to see if they are all true before running.
i.e.
Ambari_Server
...
node.set['Amari_Server']['installed'] = true
Ambari_Agent
...
node.set['Amari_Agent']['installed'] = true
Metastore
...
node.set['Metastore']['installed'] = true
Blueprint
...
if node['Amari_Agent']['installed'] and node['Armari_Server']['installed'] and node['Metastore']['installed']
# Do whatever blueprint does
...
This is hacky and would potentially require multiple converges.