The template root is the home of your application. So if the whole application is being handled by Maypole, then the template_root is the same as the document root. But if the Maypole application lives within a subdirectory of the website, then the template_root is the full path to that subdirectory. In your case, it'd be $DOCUMENT_ROOT/beerdb
The factory root is where Maypole looks if it doesn't find a template in the template_root, or a table-specific subdirectory. These are the templates that are provided in the distribution. I don't think they get installed anywhere during installation. You have to go into the build directory (somewhere in the .cpan directory) and fish them out and install them somewhere, say /usr/local/www/maypole. Or pull them out of the .tar.gz distribution file.
These undefined value errors look like you haven't inherited from MasonX::Maypole. Your BeerDB.pm needs to look a bit like this: