For e.g. here
site_xml = node['bcpc']['hadoop']['hbase']['site_xml']
complete_hbase_site_hash = generated_values.merge(site_xml)
should be
site_xml = node['bcpc']['hadoop']['hbase']['site_xml']
complete_hbase_site_hash = site_xml.merge(generated_values)
so that if there are any duplicates then value from generated_values in the recipe will be used.