大数据为Pinterest打造了线上最丰富的兴趣集,在网站的配置和运营中发挥着重要的作用,为了迅速搭建大数据平台,Pinterest将单个集群Hadoop基础设施升级为一个通用的自服务平台。近日,Pinterest在该公司的博客上公布了这个平台的打造过程。 以下为译文: 大数据在Pinterest中扮演着重要的角色。系统中有300多亿Pins,我们打造了线上最丰富的兴趣集。打造个性化搜索引擎的一个挑战是扩展数据基础设施以遍历兴趣图谱,进而提取每一Pin的内容和意图。 目前我们每天更新20TB数据,S3每天会更新大概10TB数据。我们使用Hadoop处理这些数据,Hadoop使得我们可以通过Related Pins、Guided Search及image processing等功能将最相关和最新的内容呈现给 Pinners。Hadoop每天可以帮助我们执行数千个度量,探测严格实验条件下的用户变化并进行分析。 为了迅速搭建大数据应用,我们将单个集群Hadoop基础设施升级为一个通用的自服务平台。 为Hadoop搭建一个自服务平台 尽管Hadoop是一个强大的处理和存储系统,但是它还不是一项即插即用的技术。因为Hadoop没有云计算和弹性计算,也不面向非技术用户,所以最初的Hadoop设计无法作为一个自服务系统。好在很多Hadoop库、Hadoop应用和服务提供商针对这些局限提供了解决方案。在选择解决方案前,我们先讨论了我们的Hadoop设置需求。 1. 多租户隔离:MapReduce上有许多需求和配置不同应用程序,开发者应该在不影响他人工作的前提下优化自己的工作。 2. 弹性:批处理通常需要突发性能来支持实验开发。一个理想的配置中,我们可以扩展至数千个节点集群,然后在不导致任何中断和数据损失的情况下减少规模。 3. 多集群支持:尽管我们可以水平扩展单个Hadoop集群,我们发现:很难获得理想的隔离性和弹性;诸如隐私、安全、成本分摊等商业需求使多集群支持更为实用。 4. 支持临时集群:用户应当可以在需要使用集群时获得集群,并可以随时退出集群。集群在合理的时间范围内存在,并可以在不需要手动配置的情况下全面支持所有的Hadoop工作。 5. 易于软件包部署:从OS和Hadoop层到具体业务脚层面,我们需要为用户提供定制化的接口。 6. 共享数据存储:Hadoop也应可以访问其它集群产生的数据。 7. 访问控制层:和其它的服务导向的系统一样,我们需要快速添加和修改访问(如非SSH关键词)。理想情况下,我们可以和现有认证(如通过OAUTH)整合。 权衡和实施 总结出需求后,我们在一系列自行开发的、开源的和商业专有的解决方案中寻找符合我们需求的解决方案。 解耦计算和存储:为加快处理速度,传统的MapReduce采用数据本地化。实际中,我们发现网络I/O(我们使用的是S3)并没有比磁盘I/O慢很多。通过支付网络I/O的边际成本和将计算从存储分离,我们很容易的实现我们的自服务Hadoop平台的许多需求。例如,因为我们不再需要考虑加载或同步数据,所以多集群支持变得很容易,任何现有或将来的集群都可以通过一个共享文件系统使用数据。不需要担心数据意味着更简单的操作,这是因为我们可以在不丢失任何工作的情况下进行硬复位或丢弃一个集群,迁移到另一个集群。这也意味着我们可以使用动态的节点,因此我们可以支付低廉的计算机费用,不担心损失任何持久性数据。 |