Personally, I would run:
split -d -C 1G FILE split.FILE # separate into 1G files on line boundaries
# then, on separate cores
sort -u split.FILE.00 -o sort.FILE.00
sort -u split.FILE.01 -o sort.FILE.01
...
sort -u split.FILE.N -o sort.FILE.N
# then, on one core
sort -m -u sort.FILE.*
You should be aware that you may not get what you expect from sort unless you set LC_ALL="C". You should also pass "-S" to sort to set the main memory size, probably to a value like "1G". Of course, at some point when you're doing a lot of distributed processing you'll just want to use Hadoop, as other posters have noted.