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

1.6 Hadoop:一个map和reduce的分布式框架

要想了解关于分布式计算的更多信息,就需要首先了解一种特定形式的分布式计算,它被称为Apache Hadoop,或者被简称为Hadoop。Hadoop是作为谷歌最初MapReduce框架的开源实现而设计的,现已经发展成为被大数据公司广泛使用的分布式计算软件。这些公司包括Spotify、Yelp和Netflix。

场景 Spotify是一家云音乐提供商,它有两种标志性的服务:提供互联网上的免费音乐,以及帮助你发现新音乐的定制化、个性化的播放列表。这些自定义播放列表的工作原理是,将你喜欢和收听的歌曲与其他用户收听的歌曲进行比较,然后给出一些你可能错过的歌曲建议。Spotify面临的挑战是拥有数亿用户。Spotify如何比较所有这些用户的音乐品位?

为了创建用户的音乐推荐列表,Spotify使用了Hadoop。Hadoop允许Spotify将其用户听歌的日志(PB数据量的信息)存储在分布式文件系统中,然后定期分析这些信息。能够处理海量数据是Hadoop如此有价值的原因。

如果Spotify有很少的数据,则它可以使用关系数据库。然而,由于有很多PB数据量的数据,因此这就变得不可行了。为了比较,以音乐为例,一个10PB的mp3播放列表需要2万年才能播放完。如果有人在人类驯养家畜之前就开始播放它,也许可以在你的有生之年播放完这个列表。

使用Hadoop意味着数据存储和数据处理都可以是分布式的,因此Spotify不必关注自己有多少数据。只要Spotify能够支付新机器的费用来存储数据,就可以用Hadoop来存储和处理数据(见图1.9)。

图1.9 Hadoop允许我们将数据存储在由多个节点组成的分布式文件系统中,并且使用高度并行的MapReduce进程来分析数据。