Hadoop应用案例分析:在Yahoo的应用

2019年05月24日 14:41:05 拜伦建站 89次

  【IT168 案例】关于Hadoop技术的研究和应用,Yahoo!始终处于领先地位,它将Hadoop应用于自己的各种产品中,包括数据分析、内容优化、反垃圾邮件系统、广告的优化选择、大数据处理和ETL等;同样,在用户兴趣预测、搜索排名、广告定位等方面得到了充分的应用。

  在Yahoo!主页个性化方面,实时服务系统通过Apache从数据库中读取user到interest的映射,并且每隔5分钟生产环境中的Hadoop集群就会基于最新数据重新排列内容,每隔7分钟则在页面上更新内容。

  在邮箱方面,Yahoo!利用Hadoop集群根据垃圾邮件模式为邮件计分,并且每隔几个小时就在集群上改进反垃圾邮件模型,集群系统每天还可以推动50亿次的邮件投递。

  目前Hadoop最大的生产应用是Yahoo!的Search Webmap应用,它运行在超过10 000台机器的Linux系统集群里,Yahoo!的网页搜索查询使用的就是它产生的数据。Webmap的构建步骤如下:首先进行网页的爬取,同时产生包含所有已知网页和互联网站点的数据库,以及一个关于所有页面及站点的海量数据组;然后将这些数据传输给Yahoo!搜索中心执行排序算法。在整个过程中,索引中页面间的链接数量将会达到1TB,经过压缩的数据产出量会达到300TB,运行一个MapReduce任务就需使用超过10 000的内核,而在生产环境中使用数据的存储量超过5PB。

  Yahoo!在Hadoop中同时使用了Hive和Pig,在许多人看来,Hive和Pig大体上相似而且Pig Latin与SQL也十分相似。那么Yahoo!为什么要同时使用这些技术呢?主要是因为Yahoo!的研究人员在查看了它们的工作负载并分析了应用案例后认为不同的情况下需要使用不同的工具。

  先了解一下大规模数据的使用和处理背景。大规模的数据处理经常分为三个不同的任务:数据收集、数据准备和数据表示,这里并不打算介绍数据收集阶段,因为Pig和Hive主要用于数据准备和数据表示阶段。

  数据准备阶段通常被认为是提取、转换和加载(Extract Transform Load,ETL)数据的阶段,或者认为这个阶段是数据工厂。这里的数据工厂只是一个类比,在现实生活中的工厂接收原材料后会生产出客户所需的产品,而数据工厂与之相似,它在接收原始数据后,可以输出供客户使用的数据集。这个阶段需要装载和清洗原始数据,并让它遵守特定的数据模型,还要尽可能地让它与其他数据源结合等。这一阶段的客户一般都是程序员、数据专家或研究者。

  数据表示阶段一般指的都是数据仓库,数据仓库存储了客户所需要的产品,客户会根据需要选取合适的产品。这一阶段的客户可能是系统的数据工程师、分析师或决策者。

  根据每个阶段负载和用户情况的不同,Yahoo!在不同的阶段使用不同的工具。结合了诸如Oozie等工作流系统的Pig特别适合于数据工厂,而Hive则适合于数据仓库。下面将分别介绍数据工厂和数据仓库。

  Yahoo!的数据工厂存在三种不同的工作用途:流水线、迭代处理和科学研究。

  经典的数据流水线包括数据反馈、清洗和转换。一个常见例子是Yahoo!的网络服务器日志,这些日志需要进行清洗以去除不必要的信息,数据转换则是要找到点击之后所转到的页面。Pig 是分析大规模数据集的平台,它建立在Hadoop之上并提供了良好的编程环境、优化条件和可扩展的性能。Pig Latin是关系型数据流语言,并且是Pig核心的一部分,基于以下的原因,Pig Latin相比于SQL而言,更适合构建数据流。首先,Pig Latin是面向过程的,并且Pig Latin允许流水线开发者自定义流水线中检查点的位置;其次,Pig Latin允许开发者直接选择特定的操作实现方式而不是依赖于优化器;最后,Pig Latin支持流水线的分支,并且Pig Latin允许流水线开发者在数据流水线的任何地方插入自己的代码。Pig和诸如Oozie等的工作流工具一起使用来创建流水线,一天可以运行数以万计的Pig作业。

  迭代处理也是需要Pig的,在这种情况下通常需要维护一个大规模的数据集。数据集上的典型处理包括加入一小片数据后就会改变大规模数据集的状态。如考虑这样一个数据集,它存储了Yahoo!新闻中现有的所有新闻。我们可以把它想象成一幅巨大的图,每个新闻就是一个节点,新闻节点若有边相连则说明这些新闻指的是同一个事件。每隔几分钟就会有新的新闻加入进来,这些工具需要将这些新闻节点加到图中,并找到相似的新闻节点用边连接起来,还要删除被新节点覆盖的旧节点。这和标准流水线不同的是它不断有小变化,这就需要使用增长处理模型在合理的时间范围内处理这些数据了。例如,所有的新节点加入图中后,又有一批新的新闻节点到达,在整个图上重新执行连接操作是不现实的,这也许会花费数个小时。相反,在新增加的节点上执行连接操作并使用全连接(full join)的结果是可行的,而且这个过程只需要花费几分钟时间。标准的数据库操作可以使用Pig Latin通过上述方式实现,这时Pig就会得到很好的应用。

上一条2017雅虎YAHOO跨境峰会在北京圆满结束
下一条微软卷入雅虎收购:原来是想拔掉搜索合作眼中钉梅耶尔

声明:本页内容由好推网络科技有限公司通过网络收集编辑所得,所有资料仅供用户参考;本站不拥有所有权,也不承认相关法律责任。如您认为本网页中有涉嫌抄写的内容,请及时与我们联系进行举报,并提供相关证据,工作人员会在5个工作日内联系您,一经查实,本站将立刻删除涉嫌侵权内容。

相关资讯 Releva ntnews
  1. 我们的承诺
  2. 我们的实力
  3. 我们的未来

站点地图

Copyright © 2002-2019 拜伦建站 sh-bilon.com 版权所有

>