Как запускалось:

hadoop jar twitter-1.jar twittercounter.Runner /data/twitter/twitter_rv.net twitter

Как доставались результаты:

hdfs dfs -cat twitter/top/part-r-00000 | head -50 > twitter_results/top50

hdfs dfs -get twitter/average/part-r-00000 twitter_results/average

hdfs dfs -get twitter/range/part-r-00000 twitter_results/range

Лог выполнения лежит в файле log.

Суть: все запускалось в Runner'е, все 4 задания для map-reduce.

1 - подсчет количества подписчиков: {userId, followerId} -M-> {userId, [1]} -R-> {userId, count}. TwitterAggregator*

2 - подсчет топа: {userId, count} -M-> {-count, [userIds]} -R-> {userId, count}. Далее просто head -50. TwitterGetTop*

3 - подсчет среднего: {userId, count} -M-> {1, [counts]} -R-> {usersCount, average}. TwitterAverage*

4 - построение распределения: {userId, count} -M-> {log(count), [1]} -R-> {log(count), usersCount}. TwitterGetRanges*

По факту для все reducer'ы кроме первого на выход подают "прилизанную" строчку (почему бы и нет, подумал я).

Аггрегация заняла 10 минут, подсчет топа - 5 минут, подсчет среднего - 2 минуты, построение распределения - 2 минуты, чуть более подробно можно увидеть в логах.

Результаты кинул в twitter_results