I disagree.  ```cdh4::hadoop``` intended to be  included on all hadoop nodes, including just clients.  If ```cdh4::hadoop``` was not included, then ```hadoop fs``` commands wouldn't work, as they wouldn't have the proper config files to indicate where the namenode is.  Also, ```cdh4::hadoop::directory``` could potentially be used on a node that did not have the namenode class included, so there is no puppet way to require that the namenode is up and running.

Anything that uses hadoop needs to include/require ```cdh4::hadoop```.