Какую структуру данных надо использовать что бы посчитать уникальные ip в огромном количестве?
Для битовой таблицы достаточно 256*256*256*256/8 = 512Мб памяти.
Все IP адреса в мире легко засунутся в 16 гигабайт. Не так уж и много. 
Грубо говоря, это задача про сжатие информации, и в зависимости от статистического распределения входного файла, будут хорошо работать разные алгоритмы храниения. Например, если в файле много адресов, идущих подряд, хорошо будет работать такой способ:

Делаем древовидную структуру, например по октетам.
Если взять первые два октета, нам потребуется всего 65536 бакетов.

В каждом бакете у нас будет 256 слотов, в каждом слоте - еще 256 отрезков адресов. Если нам повстречались все 256 вариантов самого младшего октета, у нас весь отрезок аккуратно схлопнется.

То есть в листьях дерева мы храним не сами адреса, а пары (база, количество)