图 1 以图形方式说明操作过程。
图 1. IIS 日志文件 MapReduce 图
我们来研究一下代码。您可以看到它非常简短,只有大约 50 行:
- mapper 函数提取出每行中的 IP 地址并返回它和值 1。这是 (key,value)
使用多处理模块是为了便于解释 MapReduce,但是这段代码只需稍加修改,就可以在其他一些 MapReduce 云上运行。这个作业的完整输出见清单 2。
清单 2. 运行的清单 1 的完整输出
| lion% time python iisparse.py Processing Log File: PoolWorker-1-ex100812.log Processing Log File: PoolWorker-2-ex100813.log Processing Log File: PoolWorker-3-ex100814.log Processing Log File: PoolWorker-4-ex100815.log Processing Log File: PoolWorker-5-ex100816.log Processing Log File: PoolWorker-6-ex100817.log Processing Log File: PoolWorker-7-ex100818.log Processing Log File: PoolWorker-8-ex100819.log Processing Log File: PoolWorker-7-ex100820.log Processing Log File: PoolWorker-3-ex100821.log Processing Log File: PoolWorker-8-ex100822.log Processing Log File: PoolWorker-4-ex100823.log Processing Log File: PoolWorker-6-ex100824.log Processing Log File: PoolWorker-1-ex100825.log Processing Log File: PoolWorker-2-ex100826.log 10.0.1.1, 24047 10.0.1.2, 22667 10.0.1.4, 20234 10.0.1.5, 18180 [...output supressed for space, and IP addresses changed for privacy] python iisparse.py 57.40s user 7.48s system 54% cpu 1:59.47 total |
严格地说,云计算可以意味着许多活动,包括在数据中心中的虚拟机上运行顺序的脚本。在本文中,我应用 MapReduce 和云计算背后的一些理论解决汇总大量数据这个实际问题。
基于云的 MapReduce 系统既有开放源码的,也有商用产品。您可以应用从本文学到的知识处理数 PB 的日志文件;因此,MapReduce 抽象是一种非常有用的工具,尤其是在云环境中。