热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Facebook谈Hadoop,Hive,HBase和A/B测试(转载)

转自:http:www.infoq.comcnnews201007facebook-hadoop-summitHadoop峰会2010上,一系列Hadoop及其相关技术的大规模用户

转自:http://www.infoq.com/cn/news/2010/07/facebook-hadoop-summit

Hadoop峰会2010上,一系列Hadoop及其相关技术的大规模用户带来了演讲报告。值得注意的是,Facebook的主题演讲展示了他们使用Hive来作分析的详细信息。Mike Schroepfer,Facebook的工程副总裁,作了描述使用Hadoop所处理的Facebook的数据规模的报告。


Schroepfer给出了Facebook如何使用Hadoop来计算大规模分析例子。当Facebook计划推出他们的“Like”按钮时,他们担心会不会发生“自相蚕食”的结果——会不会因此反而减少了文字评论,而不是提升了参与度?为了验证这一点,他们运行了A/B测试来比较用户行为,给一组用户使用新功能(Like按钮),而另一个对照组则没有。这需要在一个互接连的社区内进行测试,“内生的组织”——在组织之外的连接很少。他们使用了两组南美国家来进行比较,哥伦比业,委内瑞拉 vs 阿根廷,智利。测试的结果是使用Like按钮的时候评论增加了4.46%,而对照组的数据则是0.63%。这一类测试所产生的巨大的数据集正是Facebook使用Hadoop来处理数据的例子。Schroepfer接着给出了另一个例子来说明为什么数据驱动的A/B测试这么重要:Facebook还用同样的方法测试过电子邮件提醒的两种不同的设计。 尽管大多数的人都期望更为图形化更丰富的电子邮件会产出更好的响应率,但与简单的基于文本的电子邮件对比测试时,后者却有着三倍于前者的响应率——这表明了使用数据测试观点而不是依赖直觉所带来的巨大威力。


Schroepfer指出,Facebook有4亿用户,超过一半的用户每天登录,而Neilsen调查指出花在Facebook上的时间,比接近它的6个站点所花的时间的总和还多。Facebook用户每个月分享250亿的内容信息,以及5000亿的单月页面浏览量。要处理这样的数据卷,Facebook使用了大型的Hadoop集群,存储36PB未压缩的数据,有超过2250台机器和23000个核心,每个机器32GB内存,每天处理80-90TB数据(推测是新数据)。该集群每个月有300-400的用户,他们每天提交 25000个任务。


Facebook从两个主要的数据源输入数据到Hadoop集群。他们使用开源的雅虎!来自Hadoop峰会的最新更新获取更多内容)。


为了支持向Hadoop集群载入日志的高可靠性,他们使用Scribe与一个中间聚合器,以及基于树型的分布将数据导出到本地托管的HDFS和Hadoop集群里。在这个层次,运行第二个HDFS实例(使用单独的名字节点),作为热备份——如果主HDFS宕机,系统将向备份的HDFS写入。当拉出数据载入到生产环境中时,只需要从这两个文件系统拉出数据,压缩,然后传送到生产集群中。


Schroepfer指出,95%的Facebook任务由Hive写成,他们可以快速的写就,通常十分钟就可以。实际上Facebook创建了一个基于Web的工具,HiPal,来让业务分析师使用Hive,只需要简单的撰写查询语句,支持查询载入仓库的近20000个表(HiPal并未公开)。他们一步一步从每天的批处理过渡到实时的查询——他预见将会出现最快查询在一分钟内就可以返回的系统,这必将为一系列新兴的应用开启大门。


接下来,来自Facebook的John Sichi及何永强展示了Hive与HBase和RCFile的集成。HBase是类似BigTable的键值存储模型,将数据存储于Hadoop的DFS文件系统。Facebook正在尝试将HBase用于数据仓库里的持续更新的维数据。Facebook测试了将Hive集成到20个节点的HBase集群——从Hive向HBase载入6TB gzip压缩的数据块用了30个小时,在这种配置下可以达到30GB/每小时的增加载入速率。在HBase运行表扫描比执行原生的Hive查询要慢五倍以上。他们尝试对这一集成进行优化,以利用最新的HBase性能优化所带来的好处。RCFile是Hive中一种新的存储格式,将数据按列式(columnar)存储。他们采用这种格式,平均减少了20%的存储需求,同时可以达到更好的性能(按需延迟对列数据的解压)。


Facebook对Hadoop技术将持续投入,并对他们所使用开源项目作出了贡献,比如Hive(由他们所发起的)以及HBase。他们的计算集群正在处理超大规模的数据并有着支持高可用性的架构,低延迟的应用,和与Hadoop相集成的数据库。更多来自Facebook的案例请查阅infoq.com/facebook。


推荐阅读
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
author-avatar
非常异族图腾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有