In a way this does make sense but what would you store in your columns if all your information is in your key? And will you always be able to form that key from a client application perspective? HBase schema design is quite a difficult topic and you should definitely watch this video from last year's HBaseCon if you have some spare time: HBase Schema Design by Ian Varley.
As far as I'm concerned, the most important thing to keep in mind when designing an HBase row key is "How will I retrieve my data?".
If you (like in your example) want to retrieve the pictures from a specific album, why not make the row key something like email:album
and the let different column families store your pictures, comments, ...
Now when you do it that way and you want to retrieve a specific picture you'll have to do a scan through all the albums. So to prevent this you could use email:picture
as key instead but this just creates the same problem the other way around. You could also use email:album:picture
but then if you want to get all picture from a specific album you should know the identifiers of the pictures or you won't be able to form your key(s).
On the other hand if a user can for example only have 2000 pictures then using email:picture
or email:album
as key and specifying a column filter for album
or picture
won't be a problem there HBase will loop through a maximum of 2000 rows which doesn't take that long.
That being said, depending on what version of HBase you're using you can implement some kind of secondary index using a FuzzyRowFilter.