重度使用AWS及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平台的许多需求。例如,因为我们不再需要考虑加载或同步数据,所以多集群支持变得很容易,任何现有或将来的集群都可以通过一个共享文件系统使用数据。不需要担心数据意味着更简单的操作,这是因为我们可以在不丢失任何工作的情况下进行硬复位或丢弃一个集群,迁移到另一个集群。这也意味着我们可以使用动态的节点,因此我们可以支付低廉的计算机费用,不担心损失任何持久性数据。

  集中式Hive元存储作为解决方案:我们大部分的工作都选用Hadoop,这是因为SQL接口很简单,业界对SQL接口也很熟悉。随着时间的推移,我们发现使用元存储作为Hadoop工作的数据目录时,Hive还会带来额外的好处。Hive很像其它的SQL工具,它提供了诸如 “show tables”,“describe table”和“show partitions”的功能。这个接口比在目录中决定生成文件的清单文件简洁的多,也快的多,一致性也更好,这是因为MySQL数据库支持着这个接口。 S3的清单文件很慢,S3不支持移动,还有一致性的问题。因为我们依赖于S3,所以Hive的这些特性显得更重要。

  我们用与现有磁盘数据保持Hive元数据一致性的方式排列工作(是Hive,Cascading,Hadoop Steaming还是其它的)。因此,我们可以在多集群和多工作流更新磁盘数据,无需担心用户可能获得部分数据。

  多层包/配置:Hadoop应用间差异很大,每个应用都可能有独特的需求和依赖项。我们需要一种灵活的、可以权衡可定制性和快速配置/速度的方法。

  我们采用一种三层的方法来管理依赖项,这种方法可以将产生、调用一个千节点集群的时间从45分钟减到5分钟。

  1. Baking AMI

  对于那些较大的、需要花一段时间安装的依赖项,我们将他们预安装。其中包括我们为了国际化所采用的Hadoop库和NLP库包。我们将这一过程称为“baking an AMI”。不幸的是,很多Hadoop服务供应商尚不支持这种方法。

  2. 自动化配置(无管理的Puppet)

  我们大部分的定制化服务是使用Puppet管理的。在引导程序阶段,我们的集群在每个节点都安装和配置Puppet,仅需几分钟的时间,Puppet就可以将我们的节点和Puppet配置指定的依赖项匹配。

  目前,Puppet主要的局限性如下:当我们在生产系统添加新节点时,这些新节点会自动联系Puppet管理,推翻新配置,这常常会覆盖主节点,进而导致错误。为了避免这种错误,我们允许Puppet客户端从S3获取配置,设置一个负责同步S3配置和Puppet管理的服务,从而将Puppet客户端设置为“无管理”。

  

  3. 运行阶段(在S3上)

  MapReduce工作间发生的大部分定制化服务都涉及jars,工作配置和自定义代码。开发组需要可以在开发环境中修改这些依赖项,并且在不影响其他工作的前提下使这些依赖项在我们的任意一个Hadoop集群中可用。为了权衡灵活性、速度和隔离性,我们为S3上的每个开发者创建了一个隔离的工作目录。现在,当一个工作执行时,一个工作目录面向一个开发者,工作路径的依赖项直接从S3获得。

  执行抽象层

  先前,我们使用亚马逊的Elastic MapReduce(EMR)运行我们的Hadoop工作。EMR和S3、Spot实例运行的很好,通常也很稳定。但当我们扩展到几百个节点时,EMR变得没那么稳定,我们遇到了EMR的局限。我们在EMR上搭建了很多应用,以至于我们很难迁移到一个新系统。我们也不知道更换到哪种系统,因为EMR的一些细微差异会导致实际工作逻辑差异。为了试验其它类型的Hadoop,我们实施了一个执行接口,将所有的EMR特定逻辑都迁移到EMR执行接口。 这个接口实施了一系列方法,如“run_raw_hive_query(query_str)” 和 “run_java_job(class_path)”。这使得我们具有在几种Hadoop和Hadoop服务供应商上实验的灵活性,并可以以最小的停机时间逐渐迁移。

  最终采用Qubole

  最终我们决定将我们的Hadoop工作迁移到Qubole,Quble是Hadoop服务市场的新秀。考虑到目前我们的规模下EMR不再稳定,我们必须快速迁移到一个良好支持AWS(特别是spot实例)和S3的供应商。Qubole支持AWS/S3,并且起步简单。在审核Qubole,并将其性能和几个候选者(包括管理集群)比较后,我们选择了Qubole,原因如下:

  单个集群和横向扩展至1000个节点

  提供24/7的数据基础设施工程服务

  与Hive紧密集成

  Google“面向非技术用户的OAUTH ACL和Hive Web UI”

  面向简化的执行抽象层+多集群支持的API

  Baking AMI定制化服务(专业版支持可用)

  面向spot实例的高级支持—100%支持spot实例集群

  S3最终一致性保护

  优雅的集群扩展和自动扩展

  总的来说,使用Qubole对我们而言是一个正确的决定,Qubole团队的技术和实施工作深深地打动了我们。从去年开始,Qubole证明了其在拍字节规模的稳定性,相比EMR,为我们提高了30%~60%的吞吐量。非技术用户也很容易上手Qubole。

  我们目前的状态

  在我们当下的配置下,Hadoop是一项应用在多组织、操作费用低的灵活服务。我们有100多个常规Mapreduce用户,他们每天通过Qubole网络接口、ad-hoc工作和计划工作流运行着2000多个工作。

  我们有6个Hadoop集群,他们由3000多个节点组成,开发者可以在几分钟内选择创建自己的Hadoop集群。我们每天生成200亿日志信息,处理大概1拍字节的数据。

  我们也在试验者管理Hadoop集群,其中包括Hadoop2,不过目前,使用诸如S3和Qubole的云服务对我们而言是正确的选择,因为它们将我们从Hadoop的操作开销中解放出来,使我们可以专注于大数据应用的工程工作。

原文链接:http://code.csdn.net/news/2820889

时间: 2024-10-22 12:15:31

重度使用AWS及Hadoop,Pinterest的自服务平台打造历程的相关文章

亚马逊AWS发两项新云服务:资源与容器管理

亚马逊AWS发两项新云服务:资源与容器管理北京时间11月14日上午消息,在美国拉斯维加斯召开的 亚马逊云计算峰会re:Invent大会第二天上,亚马逊AWS云计算部门再发布了两项新服务:自动资源管理服务AWS,Lambda和高性能容器管理服务EC2, Container.AWS,Lambda可根据发生的事件运行开发者的代码,并为他们自动管理计算资源,让开发者更轻松地开发和管理对新信息响应迅速的应用.AWS,Lambda在图片上传.应用内活动.点击网站或联网设备的输出等事件发生后的几毫秒内开始运行

能否利用Hadoop搭建完整的云计算平台?

Hadoop并不完全代表云计算,所以,要用Hadoop搭建完整的云计算平台,答案是不够.我们常说云计算,实际上还是通过计算机的大规模或者说海量处理来为生活中各式各样的人和各行各业服务--所以,核心在"服务".关于服务,展开来就是常用的那3种(也是事实上的标准):SaaS,PaaS,IaaS.对云计算来说,公有和私有,虚拟和存储,这其实是相对讨论的核心. 回头说Hadoop.在Google三大论文的直接刺激下,Hadoop社区兴起,而在众多的开源实现中,Hadoop(主项目)可以说是所有

云基地牵手AWS,共促中国云服务创新

北京时间12月18日,北京市政府.宁夏自治区政府和亚马逊AWS.云基地四方在京签署合作谅解备忘录,以"前店后厂",即以北京为前店,宁夏中卫为后厂模式兴建.发展和推广云服务,通过位于北京和宁夏的云计算基础设施,向位于中国各地的客户提供云服务. 所谓"前店后厂",是指将销售.市场.应用开发以及低延迟生产.计算和服务放在靠近大城市的前店,对延迟不敏感的生产.计算和服务在能源.资源集聚的后厂.随着云计算的兴起,将大型云计算数据中心建在偏远地区,与在大城市的数据中心形成&qu

基于Hadoop的智能家居信息处理平台

基于Hadoop的智能家居信息处理平台 徐源吾 王珣 智能家居包含门禁系统.温湿度系统.室内滴灌系统.照明系统等.每一个系统包含了不同的终端,每一个终端安装有不同的传感器,传感器感知周围环境产生大量数据.用户数的不断增加将产生海量数据.本文针对传统的海量数据处理方法会出现硬件成本高.计算瓶颈等问题,在云计算理论的基础上针对智能家居中的门禁系统.温湿度系统.滴灌系统和照明系统搭建了基于Hadoop的数据处理平台.该平台对大量传感信息进行分布式并行处理,并根据处理结果向底层设备发送指令以实现智慧化服

基于Hadoop的云教学资源平台设计与实现

基于Hadoop的云教学资源平台设计与实现 北京交通大学 徐东 本文首先对云平台中教学资源的存储结构.融合HBase和MySQL两类数据库优势的混合式数据库系统以及基于J2EE中主流SSH2框架的Web系统进行设计,使用Hadoop的分布式文件系统来存储教学资源,实现了一个实验性的基于Hadoop的云教学资源平台.其次,重新定义了平台资源反馈方式及角色关系,增加平台管理和维护的灵活行.同时,为提升平台及资源共享能力,开发了对外开放的应用接口.最后,进行云教学资源平台与传统资源平台对比的性能测试,

云队列:一个基于Hadoop的大规模消息基础平台

云队列:一个基于Hadoop的大规模消息基础平台 东华大学 史冬冬 本文基于从当前分布式系统消息通信的需求出发,并结合Hadoop云计算平台,提出了一个面向Internet规模的.高性能和高可靠的消息队列服务平台--云队列(Cloudqueue).通过云队列平台所提供的消息服务实现异步通讯.存储转发.可靠传输.跨互联网等特性,云队列可以在云计算时代为应用程序提供高性能.高可靠.大容量的面向互联网的消息传递服务. 文章从现实需求出发,在分析了消息中间件的相关基础知识和Hadoop关键技术的基础之上

基于Hadoop云计算智能家居信息处理平台

近年来,在物联网等具有海量数据需求的应用变得越来越普遍时,无论是从科学研究还是从应用开发的角度来看,掌握云计算技术已成为一种趋势.智能家居作为物联网应用的主要领域之一,自然离不开云计算.云计算的发展使用户无需关注复杂的内部工作机制.无需具备丰富的分布式系统知识及开发经验,即可实现大规模分布式系统规定部署,以及海量数据的并行处理. Hadoop是目前较为成熟和应用较为广泛的云计算架构之一.Hadoop的核心思想是分布式并行处理.Hadoop技术中的关键技术是 HDFS(分布式文件系统)和Map/R

AWS推出基于AI的云安全服务

AWS本周一发布了新的云服务,并且宣布FICO和Hulu将其几个关键应用程序迁移到AWS的公有云上. AWS本周发布的新服务包括将数据中心的企业工作负载迁移到云端的Migration Hub工具;管理.无服务提取.ETL服务的Glue;以及使用机器学习自动保护云端数据安全的Macie.AWS周一发布的这3个新服务已经可以供用户试用. AWS的云架构策略副总裁Adrian Cockcroft在纽约AWS峰会的主旨演讲中表示,该公司的增强平台为企业提供了前所未有的支持. 新的云服务 Migratio

Hadoop集群让数据分析平台化

咨询师Wayne Eckerson说,Hadoop提供了一个平台,为单独数据分析和商业用户建立起的spreadmart(报表集市)提供更为方便的控制,同时还让他们有地方进行自助服务分析. Spreadmart是spreadsheet data mart的简称,在商务智能领域,指多个个人和团队创建的各不相同的电子数据表格.因为数据不一致,所以给业务带来很大的麻烦. 几十年来,所有数据分析人员都使用自助服务分析工具来访问和操纵数据,确定趋势和反常现象,展示商务智能的洞察力等.虽然在这些年,工具的类型