As others have mentioned in their answers, it depends on what you are trying to say with the data. If all you want to do is explore how different communities are before and after discontinuity (I'm assuming this is flow interruption or drying), then you should probably use non-metric multidimensional scaling, assuming you have a data set with lots of 'zeros' (i.e. the same species are not found in each site and each sample). If your data are normally distributed (extremely rare in community data), then you could use something like principle components analysis. If your main goal is to use measured environmental factors to explain community composition (AND you think that you measured all of the important environmental factors that explain community composition in your community), then you could use something like canonical correspondence analysis. If your main purpose is to break your sample units into 'groups' of sample types, or to see if your community data match some expected grouping pattern, then you could use a multivariate test like multi-response permutation proceedure (MRPP) or analysis of similarity (ANOSIM) or perMANOVA. A cluster analysis is also a quick way to look at how samples may fall into groups, but it should be noted that most cluster analysis techniques form groups in a confined way-- by looking at only the two most-related samples at a time-- so you can form some strange groupings at time because of this process. MRPP, ANOSIM, or perMANOVA would be a better approach if you already have some a priori reason to assign your samples to groups (e.g. by watershed or by before/after disturbance).
You can run most of these analyses in R, or use programs like PC-Ord ($199), CANOCO (~$300), or others.
As others have mentioned in their answers, it depends on what you are trying to say with the data. If all you want to do is explore how different communities are before and after discontinuity (I'm assuming this is flow interruption or drying), then you should probably use non-metric multidimensional scaling, assuming you have a data set with lots of 'zeros' (i.e. the same species are not found in each site and each sample). If your data are normally distributed (extremely rare in community data), then you could use something like principle components analysis. If your main goal is to use measured environmental factors to explain community composition (AND you think that you measured all of the important environmental factors that explain community composition in your community), then you could use something like canonical correspondence analysis. If your main purpose is to break your sample units into 'groups' of sample types, or to see if your community data match some expected grouping pattern, then you could use a multivariate test like multi-response permutation proceedure (MRPP) or analysis of similarity (ANOSIM) or perMANOVA. A cluster analysis is also a quick way to look at how samples may fall into groups, but it should be noted that most cluster analysis techniques form groups in a confined way-- by looking at only the two most-related samples at a time-- so you can form some strange groupings at time because of this process. MRPP, ANOSIM, or perMANOVA would be a better approach if you already have some a priori reason to assign your samples to groups (e.g. by watershed or by before/after disturbance).
You can run most of these analyses in R, or use programs like PC-Ord ($199), CANOCO (~$300), or others.
if you want to investigate links between habitat variables and community structure, have a look on CCA (Canonical Correspondence Analysis ). To perform CCA, you can use the Free Software language R (www.r-project.org/) with the package ADE4 (see http://pbil.univ-lyon1.fr/ade4/ade4-html/cca.html )