项目简介
本项目致力于解决从100GB的URL数据中统计出出现次数最多的Top 100 URL的问题。鉴于内存限制仅为1GB,项目运用高效的分布式处理和优化策略,保障在有限资源下高效完成任务。
项目的主要特性和功能
- 数据拆分与分布式处理:运用哈希算法把大文件拆分为多个小文件,保证每个小文件能在内存中处理,且每个小文件独立统计URL出现次数。
- 多种统计方法:支持使用哈希表(hash - map)、前缀树(trie - tree)和排序方法进行URL计数,同时针对不同方法开展复杂度分析,以便在不同数据规模下选取最优方法。
- 数据倾斜处理:识别并处理数据倾斜问题,通过增加随机前缀再次拆分数据确保任务均衡;对于排序方法,采用基于磁盘的归并排序以应对大数据量。
- IO优化:在每个分片中仅保留TopN结果,减少中间结果的IO开销,提升整体效率。
- 鲁棒性增强:实现中间结果的检查点(checkpoint)机制,确保程序崩溃后可恢复并继续处理,避免重复计算。
安装使用步骤
假设用户已经下载了本项目的源码文件,按以下步骤操作:
1. 下载测试数据:
bash
wget http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
unzip top-1m.csv.zip
2. 生成测试URL数据并增加数据倾斜:
bash
python2 conv.py --filename top-1m.csv --out top-1m.url
3. 运行计算程序:
bash
python2 solve.py --filename top-1m.url --split 2 --ntop 100
参数说明:
- --filename
:指定待处理的URL文件。
- --split
:设置拆分小文件的期望大小(单位:MB),可根据内存容量调整。
- --ntop
:指定输出的TopN结果数量。
通过上述步骤,可轻松运行本项目并获取Top 100 URL的统计结果。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】