深入大型数据集:并行与分布化Python代码
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1 入介绍

本章要点

■ 介绍map和reduce编程风格

■ 理解并行编程的好处

■ 将并行编程扩展到一个分布式环境

■ 云中的并行编程

本书将向你传授一套精通大型数据集处理的编程技术、工具和框架。在本书中,我将把你正在学习的编程风格称为mapreduce风格。map和reduce编程风格是这样一种编程方式:我们可以围绕map和reduce这两个函数来组织自己的代码,从而轻松地编写出在同一时间完成多项任务的并行程序。为了更好地理解为什么要使用map和reduce风格,请考虑以下这个场景。

场景 两个年轻的程序员想出了一个对互联网上的网页进行排名的主意。他们希望根据链接某个页面的其他网站的重要性,对这些页面进行排名。他们认为互联网应该像高中学校一样:“酷”孩子们谈论得越多的学校,就越重要。这两个年轻的程序员喜欢这个想法,但是他们怎么可能分析整个互联网呢?

熟悉硅谷历史的读者会看出,这个场景描写的就是谷歌的起源故事。在其早期,谷歌普及了一种被称为MapReduce的编程方法,作为一种对整个互联网进行有效处理和排序的方法。这种风格天然适合谷歌,因为以下两点:

1. 谷歌的两位创始人都是数学怪才,而MapReduce来源于数学。

2. 与更传统的编程风格相比,以map和reduce为中心的编程实现了一种更简单的并行化。

map和reduce编程风格与MapReduce的区别

我将在本书中多次提到map和reduce编程风格。实际上,这种编程风格是我教你如何扩展程序的一个主要手段。尽管这种风格在名称和功能上与MapReduce相似,但是它比MapReduce更加通用。MapReduce是一个用于并行和分布式计算的框架。map和reduce风格是一种编程风格,它允许程序员以最少的重写代价并行地运行其工作,并将这种工作扩展到分布式工作流上。这可能会使用MapReduce,也可能使用其他的方法。

在本书中,我们将处理谷歌在其早期阶段遇到的相同问题。我们将讨论一种编程风格,它使我们能够很容易地获得一个好主意并将其进行扩展。我们将讨论一种编程方法,可以让从个人工作到团队工作,或者从在笔记本电脑上工作到在分布式并行环境中工作变得容易。换句话说,我们将研究如何掌握处理大型数据集的方法。