设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

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

2014-7-30 10:52| 发布者: joejoe0332| 查看: 5015| 评论: 0|原作者: Pinterest|来自: CSDN

摘要: 数据为Pinterest打造了线上最丰富的兴趣集,在网站的配置和运营中发挥着重要的作用,为了迅速搭建大数据平台,Pinterest将单个集群Hadoop基础设施升级为一个通用的自服务平台。近日,Pinterest在该公司的博客上公布 ...


集中式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获得。




酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部