本章内容
- MapReduce
- Python中Hadoop流的使用
- 使用mrjob库将MapReduce自动化
- 利用Pegasos算法并行训练支持向量机
常听人说:“兄弟,你举的例子是不错,但我的数据太大了!”毫无疑问,工作中所使用的数据集将会比本书的例子大很多。随着大量设备连上互联网加上用户也对基于数据的决策很感兴趣,所收集到的数据已经远远超出了我们的处理能力。幸运的是,一些开源的软件项目提供了海量数据处理的解决方案,其中一个项目就是Hadoop,它采用Java语言编写,支持在大量机器上分布式处理数据。
假想你为一家网络购物商店工作,有很多用户来访问网站,其中有一些人会购买商品,有一些人则在随意浏览后离开了网站。对于你来说,可能很想识别那些有购物意愿的用户。如何实现这一点?可以浏览Web服务器日志找出每个人所访问的网页。日志中或许还会记录其他行为,如果这样,就可以基于这些行为来训练分类器。唯一的问题在于数据集可能会非常大,在单机上训练算法可能要运行好几天。本章就将介绍一些实用的工具来解决这样的问题,包括Hadoop以及一些基于Hadoop的Python工具包。
Hadoop是MapReduce框架的一个免费开源实现,本章首先简单介绍MapReduce和Hadoop项目,然后学习如何使用Python编写MapReduce作业1。这些作业先在单机上进行测试,之后将使用亚马逊的Web服务在大量机器上并行执行。一旦能够熟练运行MapReduce作业,本章我们就可以讨论基于MapReduce处理机器学习算法任务的一般解决方案。在本章中还将看到一个可以在Python中自动执行MapReduce作业的mrjob框架。最后,介绍如何用mrjob构建分布式SVM,在大量的机器上并行训练分类器。 1. 一个作业即指把一个MapReduce程序应用到一个数据集上。——译者注