整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

16.2.1 Hadoop 在 Facebook 的使用

hadoop 花牛 19℃ 0评论

1.发展史

随着Facebook网站的使用量增加,网站上需要处理和存储的日志和维度数 据激增。在这种环境下对任何一种数据处理平台的一个关键性要求是它必 须具有快速的支持系统扩展的应变能力。此外,由于工程资源有限,所以 系统必须是可靠的,并且易于使用和维护。

Facebook最初使用的数据仓库都是在Oracle系统上实现的。在遇到可扩展 性和性能方面的问题之后,大家开始调査是否可以采用开源技术解决我们 的问题。作为调査工作的一部分,我们部署了 一个相对小规模的Hadoop系 统,并且把一部分核心数据集_发布到这个系统上。Hadoop对我们来说有相 当大的吸引力,一是因为雅虎*内部就一直使用这一技术支持后台数据批处 理需求,二是因为我们熟知由Google带动并普及使用的MapReduce模型, 它具有简单性和可扩展性的特点。

我们最初的原型系统开发得非常成功:工程师们都非常欣赏它能在合理的 时间范围内处理大数量级数据的能力,这正是我们以前所没有的。再者, 能用自己熟悉的编程语言来进行数据处理工作(使用Hadoop Streaming),他 们也感到非常髙兴。把我们的核心数据集发布到一个集中的数据仓库系统 也非常方便。几乎同时,我们开始开发Hive工具。这使用户在Hadoop

群上处理数据变得更加容易,因为普通的计算需求都能用大多数程序员和 分析师们熟悉的SQL语句来表达。

其结果是,集群的规模和对它的使用迅速增长,现在Facebook正在运行世 界第二大Hadoop集群系统。在写这篇文章的时候,我们在Hadoop上存放 的数据超过了 2PB,每天给它加载的数据超过10TB。我们的Hadoop系统 具有2400个内核,大约9 TB的内存,并且在一天之中的很多时间点,这 些设备都是满负荷运行的。根据系统的增长情况,我们能够迅速地进行集 群规模扩展,而且能够利用开源的优点,通过修改Hadoop代码让它适应我 们的需求。同时我们也对开源做出了贡献,比如我们开发的一些Hadoop核 心组件,我们提供了开源的Hive,它现在也是Hadoop上层的一个子项目。

2.使用实例

在Facebook,对Hadoop至少有下面四种相互关联但又不同的用法。

•在大规模数据上产生以天和小时为单位的概要信息。这些概要信息 在公司内用于各种不同的目的。

    基于这些概要信息产生的报告,可供工程或非工程职能组用来 制定产品决策。

    概要信息包含用户数、网页浏览次数和网站访问时间的增长情 况,提供在Facebook上进行广告营销活动的相关的性能评估。

    数据对网站相关属性提供后台处理支持,比如计算你喜欢的人 和应用程序。

•在历史数据上运行即席作业。数据分析结果有助于产品组和执行主管解决问题。

•成为我们日志数据集实用而长期的存档存储器。

•通过特定的属性进行日志事件査询(用这些属性对日志建索引),这可以用于维护网站的数据完整性并且保护用户免受垃圾邮件程序的骚扰。

3.数据架构

图16-4展示了数据架构的基本组件以及这些组件间的数据流。

如图16-4所示,数据处理过程中使用了以下组件。

 image.png

图16-4. Facebook的数据仓库架构

• 记录器(Scribe)日志数据是由Web服务器以及后台服务如捜索后 台(Search backend)产生的。我们使用Facebook自己开发的一个开 源日志收集服务Scribe(记录器),它把几百个日志数据集(每天有几 十个TB的数据量)存放在几个网络文件服务器(NFS)上。

• HDFS大部分的日志数据被复制存入一个中央的HDFS系统。每 天,维度数据也从内部的MySQL数据库复制到这个HDFS文件 系统。

• Hive/Hadoop 我们备用由Facebook开发的Hadoop的子项目Hive HDFS收集的所有数据创建一个数据仓库。HDFS中的文件包括 来自Scribe的日志数据和来自MySQL的维度数据,它们都存作可以访问的具有逻辑分区的表(table)Hive提供了一种类SQL的査 询语言,它配合MapReduce创建/发布各种概要信息和报表以及对这些表格数据执行历史分析。

4.Tools(工具集)

建立于Hive之上的浏览器界面允许用户通过几次简单的鼠标点击来创建和发出Hive查询(依次启动相应的MapReduce作业)

• 传统的关系数据库系统我们使用OracleMySQL数据库来发布这些概要信息。虽然这些数据库存储的数据量相对较小,但是査询 频度很高并且我们需要对査询做出实时响应。

• DataBee 它是一个内部的ETL(数据提取、转换和加载,即 Extraction-Transformation-Loading)工作流软件,它为跨数据处理作业的可靠批处理提供一个通用的框架。

在网络文件系统层(NFS tier)存储的来自Scribe的数据被复制作业持续复制 到HDFS集群上。NFS设备被挂接在Hadoop层,复制处理成为在Hadoop 集群上运行的只有map阶段的作业。这使对复制处理的扩展变得更容易, 而且使其具有错误恢复的能力。目前,我们每天用这种方法从Scribe复制6 TB以上的数据到HDFS。我们每天也从MySQL层下载多达4 TB的维度数 据到HDFS。在Hadoop集群上调度这些把数据从MySQL复制出来的map作 业是非常简单的。

5.Hadoop 配置

Hadoop部署工作的中心思想是整合。我们使用一个HDFS系统,大量的处 理工作在一个单独的MapReduce集群上完成(运行一个单独的jobtracker)。 这样做的原因很简单,如下所示。

• 只运行一个集群可以最小化管理成本

• 数据不必复制。对于前面描述的使用样例,可以利用同一个地方的 数据满足所有的任务需求

• 所有的部门都使用同一个计算机集群可以极大地提升效率 •我们的用户工作在一个相互协作的环境下,因此对于服务质量的要 求还不是很髙(至少就目前而言)

我们也拥有一个单独的共享的Hive元数据存储工具(MySQL数据库), 它管理HDFS上存储的所有Hive表涉及的元数据信息。

转载请注明:全栈大数据 » 16.2.1 Hadoop 在 Facebook 的使用

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址