- 浏览: 5171549 次
- 性别:
- 来自: 天津
博客专栏
-
实战 Groovy
浏览量:29392
文章分类
- 全部博客 (639)
- 代码之谜 (6)
- JavaScript quirks (5)
- 程序员 (92)
- Java (93)
- BT编程 (7)
- html/css (64)
- Groovy&Grails (42)
- Android (20)
- C/C++ (5)
- PHP/Perl/Python (46)
- 经典文章 (51)
- CodeIgniter (14)
- JQuery (10)
- 笑话 (4)
- 其他 (32)
- javascript (69)
- 云计算 (0)
- html5 (7)
- 面试 (8)
- google (3)
- nosql (2)
- nodejs (11)
- go (5)
- erlang (1)
- 小常识 (3)
- 冷知识 (5)
- database (4)
- web (12)
- 架构 (12)
- Exception (0)
最新评论
-
jqw1992:
https://www.chromefor.com/libra ...
[福利] 开发者必备的 Chrome 插件——ChromeSnifferPlus -
litjerk:
初步算了一下,目前最最精简的Win98版是5M,他5个小时多敲 ...
让人目瞪口呆的三位世界级电脑大师 -
379855529:
。。似乎重点没说NIO啊,前面基础只是铺垫的很好的,可是我要的 ...
Java NIO与IO的详细区别(通俗篇) -
springmvc_springjpa:
spring mvc demo教程源代码下载,地址:http: ...
一步步开发 Spring MVC 应用 -
匡建武:
Good
四个程序员的一天
Facebook有了“自知之明” 在2005年9月,Facebook首次向非大学生公开,允许高中生注册账号。忠实的用户愤怒了,但Facebook团队认为这是为网站做出的正常方向。那么它该如何证明它的方案是正确的呢? 此外,在几乎所有可登录Facebook网站的学校中,Facebook已经渗入学生当中,但还是在有部分学校中,该网站一直不受青睐。和那些更成功的网络相比,这些落后的网络对于Facebook有什么区别呢?Facebook团队应该如何做才能激励他们的成功? 当我在2006年2月参加Facebook面试时,他们正积极地期望找到这些问题的答案。我曾在大学学习数学,在华尔街工作近一年,工作内容是构建模型来预测利率、价格复杂的衍生产品和对冲抵押贷款池;有一定编程经验,GPA成绩“暗淡”。虽然我的背景可能不太理想,但是Facebook却给了我研究科学家的职位。 几乎同时,Facebook聘用了一位报告分析主管。该主管在解决问题方面的经验远远超过我。我们和另外一位工程师一起,开始着手构建一个数据收集和存储平台,以便找到我们产品以上问题的答案。 我们第一个尝试是构建一个离线信息库,其涉及两个方面:一是用Python脚本把查询分发到Facebook的MySQL服务器层,二是采用C++实现守护进程,实时地处理事件日志。当脚本可以如期运行,我们每天收集大约10GB的数据。我后来明白系统的这部分通常称为“ETL”过程,即抽取、转换和加载。 Python脚本和C++守护进程从Facebook的数据源系统中抽取数据,然后这些数据又被加载到MySQL数据库用于离线查询。我们在包含这些数据的MySQL上又运行了一些脚本和查询,对数据进行聚集,以便得到更有用的表现方式。这种用于决策支持的离线数据库即“数据仓库”。 最后,通过简单的PHP脚本把数据从离线的MySQL数据库抽取出来,向内部用户展示收集到的信息摘要(Summary)。这是我们第一次可以回答网站特性对用户行为的影响。早期通过以下几种渠道分析最大化增长:登出用户的默认页面的布局、邀请来源、Email联系方式导入器的设计。除了以上分析,我们开始通过历史数据开发简单的产品,包括对赞助商成员特性进行聚集的内部项目。实践证明,该项目很受品牌广告商欢迎。 我那时没有意识到,实际上,通过ETL框架、数据仓库和内部控制台,我们已经构建了一个简单的“商业智能”系统。 “猎豹”和“大象”(译注1) 从第一天开始对Facebook的点击流写日志起,到现在我们已经收集了超过400GB的数据。对该数据集的加载、索引和聚集操作对Oracle数据库的负载很重。虽然做了很多优化操作,但是我们还是无法在24小时内完成对一天的点击流的聚集操作。很显然,我们需要把日志文件聚集到数据库外,只在数据库中保存摘要信息供后期查询。 幸运的是,一个来自某大型网站的顶尖工程师加入了我们团队,他有过处理大规模Web点击流的经验。仅仅几周的时间,该工程师就构建了一个名为Cheetah(猎豹)的并发日志处理系统,该系统能够在两个小时内处理一天的点击流。这实在太让人振奋了。 但是,Cheetah存在一些不足:首先,在处理完点击流数据后,原始数据还是以归档方式保存,不能够被再次查询。此外,Cheetah是从一个共享的NetApp归档数据中获取点击流数据,而NetApp归档数据的读带宽受限。每个日志文件的“模式”是嵌入在处理脚本中,而不是保存为可查询格式。我们没有收集进程信息,而是通过Unix基础工具cron来调Cheetah任务,因此无法应用复杂的加载共享逻辑。最重要的是,Cheetah不是开源的。我们团队很小,资源有限,无法分配更多的资源来开发、维护和给新用户培训使用Cheetah系统。 Apache的Hadoop项目,由Doug Cutting和Mike Cafarella于2005年末启动,是我们取代Cheetah的最佳选择。以Doug的孩子的玩具大象命名,Hadoop项目的目标是实现遵从Apache2.0许可的G公司的分布式文件系统和MapReduce技术。雅虎在2006年1月聘用了Doug Cutting,并投入了大量的工程资源来开发Hadoop。在2006年4月,该软件使用188台服务器,能够在47小时内,对1.9TB的数据进行排序。虽然Hadoop的设计在很多方面优于Cheetah,但它在那时还太慢了,不能够满足我们的需求。在2008年4月,Hadoop用910台服务器,可以在209秒内对1TB的数据进行排序。由于Hadoop性能的改进,我说服了运行组团队利用60台Web服务器和3台500GB的SATA驱动器,开始在Facebook第一次部署Hadoop集群。 在最开始, 我们通过流方式在Hadoop和Cheetah中都导入一部分日志。Hadoop增强的编程能力加上其能够查询历史数据,从而推动了一些其他有趣的项目。其中一个应用是对所有Facebook用户交互的有向对进行打分来确定这些用户的亲密程度;这个分数可以被用于搜索和新闻订阅的排序。过了一段时间,我们把所有的Cheetah工作流都迁移到Hadoop上,废弃了前者。后来,事务数据库收集程序也都迁移到了Hadoop。 有了Hadoop,Facebook的基础设施可以支持对无结构化和结构化的数据的大规模分析。随着平台扩展为每天几百TB的数据规模,可以执行成千上万个任务,我们发现由于现在系统能够存储和检索的数据规模很大,我们可以构建新的应用,探索新问题的答案。 当Facebook向所有的用户开放注册,用户数在一些国家增长迅猛。但是在那时,我们无法根据国家执行点击流粒度分析。自从有了Hadoop集群,我们可以通过加载所有的历史访问日志到Hadoop,写一些简单的MapReduce任务来重新分析Facebook在一些国家,如加拿大和挪威增长迅猛的原因。 Facebook的用户每天都有几百万半公开的对话。据一次内部估算,留言板的数据量是博客的10倍!但是,这些对话的内容还是无法进行访问用来数据分析。在2007年,一个对语言学和统计学有强烈兴趣的暑期实习生Roddy Lindsay加入了数据组。通过Hadoop,Roddy能够独立构建一个强大的趋势分析系统,该系统名为Lexicon,每天晚上能够处理TB级别的留言板数据。 在为Facebook应用构建信誉积分系统时,我们证明了把不同系统的数据存储到相同的存储库中会导致严重的问题。在2007年5月启动了Facebook平台后不久,我们的用户就被“淹没”在添加应用的请求中。我们很快意识到需要添加一个工具来识别有用的应用和用户认为是spam的应用。通过收集API服务器的数据、用户信息以及来自网站本身的行为数据,系统能够构建一个模型对应用进行打分,这使得系统可以分发我们认为对用户最有用的应用邀请。 新工具和应用研究 在Facebook,绝大部分Hadoop集群的早期用户都是渴望追求新兴技术的工程师。为了使企业的更多人可以访问信息,我们在Hadoop上构建了一个数据仓库框架,并称为Hive。 Hive的查询语言类似于SQL,支持嵌入MapReduce逻辑、表分区、抽样和处理任意序列化数据的能力。最后一个特征至关重要,因为收集到Hadoop的数据在结构上不断变化;允许用户指定自己的序列化模式,可以使我们把为数据指定结构问题转为把数据加载到Hive。此外,我们还实现了一个简单的用户界面来构建Hive查询,名为Hipal。使用这些新的工具,市场、产品管理、销售和客户服务的非工程师都能够在几TB的数据上自己执行查询。经过几个月的内部使用后,在Apache2.0许可下,Hive成为Hadoop的官方子系统,现在仍然在积极地开发中。 除了Hive,我们构建了分享图表和图形的门户Argus(受IBM的Many Eyes 项目启发) 、工作流管理系统Databee、用Python写MapReduce脚本的框架PyHive、为终端用户提供结构化数据服务的存储系统Cassandra(现在作为开源,在Apache孵化器中)。 随着这些新系统的稳定,我们最终构建了由单一Hadoop集群管理的多层模式的数据。企业中的所有数据,包括应用日志、事务数据库和Web爬虫,都以原始数据格式,定期收集到Hadoop分布式文件系统中。夜间执行的几万个Databee进程将把一部分数据转化为结构化格式,把它放入由Hive管理的HDFS文件目录中。在Hive中执行下一步聚集操作,用来生成Argus服务报表。此外,在HDFS内,在自己的home目录下维护“沙盒”的工程师可以运行原型任务。 目前,Hadoop包含了将近2.5PB的数据,而且以每天15TB的数量级增加。每天都有3000个以上的MapReduce任务在运行,处理55TB的数据。为了适应这些运行在集群上的任务的不同优先级,我们构建了作业调度器,实现在多个队列上的资源共享。 除了支持内部和外部的报表、a/b测试管道和很多不同的数据密集型产品和服务,Facebook的Hadoop集群可以实现一些有趣的应用研究项目。 由数据科学家Itamar Rosenn 和Cameron Marlow主持的一个纵向研究项目用于预测长期的用户参与的最重要的因素是什么。我们使用信息平台来选择一些用户的样本,删除游离点,并对参与度的不同尺度使用一些最小角度回归技术来生成大量的特性。有些特性能够通过Hadoop生成,包含计算好友网络密度的各种尺度和基于信息特性的用户范围。 另一个探索激励新用户贡献内容的动机的内部研究,在2009年CHI 会议的论文“Feed Me: Motivating Newcomer Contribution in Social Network Sites”中有描述。Fa c ebook数据组的一个更新的研究是查看信息流是如何在Facebook的社会图中流动,该研究的标题为“Gesundheit! Modeling Contagion through Facebook News Feed”,已被2009 ICWSM会议接收。 在Facebook,每天收集证据、测试假设、构建应用和使用共享的信息平台生成新的洞察。而在Facebook之外,其他公司也同时构建了类似的系统。 数据科学家 在最近的访谈中,G公司首席经济学家Hal Varian强调了员工需要能够从之前描述的信息平台中抽取信息。正如Varian所言:“找到能够为一些变得普遍且廉价的东西提供稀缺、互补的服务。那么,是什么变得普遍且廉价?数据。是什么与数据相辅相成?分析。” 在Facebook,我们发现传统的头衔如商业分析师、统计学家、工程师和研究科学家都不能确切地定义我们团队的角色。该角色的工作是变化多样的:在任意给定的一天,团队的一个成员可以用Python实现一个多阶段的处理管道流、设计假设检验、用工具R在数据样本上执行回归测试、在Hadoop上为数据密集型产品或服务设计和实现算法,或者把我们分析的结果以清晰简洁的方式展示给企业的其他成员。为了掌握完成这多方面任务需要的技术,我们创造了“数据科学家”这种角色。 在金融服务领域已经构建了历史市场行为的大数据存储作为该领域的数据科学家, 即数据分析专家(Quants),来开发新模型的实验场。在工业以外,我发现在很多科学领域,研究生扮演着数据科学家的角色。Facebook数据组团队的其中一员曾在生物信息实验室工作过,在那里他构建过数据管道流,并做类似的离线数据分析。在CERN,著名的Large Hadron Collider生成大量的数据,这些数据是由一群追求突破的研究生精心收集和钻研的。 最近新出的书如Davenport和Harris合著的《Competing on Analytics》(哈佛商学院出版社,2007),Baker的《The Numerati》(Houghton Mifflin Harcourt,2008)以及Ayres的《Super Crunchers》(Bantam,2008)都强调了在跨工业中数据科学家的重要性,他们在促进企业基于收集到的信息做出改进发挥了至关重要的作用。和研究社区在数据空间的调研一起,数据科学家在今后几年需要进一步的定义。通过更好的阐明数据科学家角色,我们可以建设培训课程、制定广告层次、组织会议、写书以及为任何被认可的行业做补充。在这个过程中,可行的数据科学家组织将会不断扩展,用来满足飞速增殖的数据平台上不断增长的专业“领航员”需求,进一步加速跨企业的学习过程。 结论 当面对在Facebook构建一个信息平台的挑战时,我发现观察别人是如何跨越时间和问题领域来解决相同的问题是很有帮助的。作为工程师,我最初的做法是通过已有可得的技术作为指导,这在现在看来显得有点目光短浅。最大的挑战是一直致力于研究构建“学习型组织”的基础平台和人员构成这个大的问题,而不是某些特定的技术系统,如数据仓库或企业搜索系统。 我确信构建信息平台采用的硬件和软件将会迅速演化,并且数据科学家需要掌握的技术也将以同样的速度变化。保持致力于加速学习过程的目标对于企业组织和科学都有帮助。未来属于数据科学家! 译注1 : 猎豹和大象在此采用了借代的修辞方法。猎豹(cheetah)指的是Facebook的The Cheetah日志处理系统,大象(elephant)则代指的是Hadoop项目。
发表评论
-
干货分享:从零开始学编程 系列汇总
2015-01-08 10:50 3648程序员总爱重新发明轮 ... -
如何看待一些知名博客推广软文的行为?
2015-01-05 13:39 3194本文来自我在知乎上的 ... -
如何看待一些知名博客推广软文的行为?
2015-01-05 13:38 1本文来自我在知乎上的一个回答:http://www.zhi ... -
发福利,整理了一份关于“资源汇总”的汇总
2014-11-13 13:28 6329觉得有用的话,可以去github关注:https://git ... -
告别码农,成为真正的程序员
2013-12-25 10:38 756321本文是我借助 Google 从网上拼凑的文章,可能条理不是 ... -
苦B程序员们,你的法拉利呢?
2013-11-26 11:34 7000每当我说起「每月大概在亚马逊买100块钱的书」,别人都会问 ... -
整理了一些免费的编程中文书籍
2013-11-04 15:02 138272在 github 上整理了一些免费的编程中文书籍 http ... -
科普帖:线程与进程
2013-09-17 16:17 7003这么解释问题吧: 单进程单线程:一个人在一个桌子上吃菜 ... -
程序员在 5 月 20 日这天有什么特别的表白方式?
2013-05-21 08:52 6480昨天在知乎回答了一个问题,程序员在 5 月 20 日这天有 ... -
程序员选择字体的标准是?
2013-05-04 10:40 8067整理自我在 SF 上的回答: 本来在 大家都用什么 ... -
怎么成为技术大牛
2013-03-25 15:50 4666本文转载自淘宝 @玉伯也叫射雕。 微博和知乎上不时 ... -
GitHub无法访问,修改hosts文件解决
2013-01-22 12:30 30490前几天由于12306的抢票插件,导致了github无法访问 ... -
随想录(程序员和收入)
2013-01-21 15:39 11822距离上一次写博客已经很长时间了,大约过了三个星期。这三个星 ... -
程序员成熟的标志
2012-12-07 14:58 11202程序员在经历了若干年 ... -
精通one,学习another,关注next
2012-11-05 09:24 6641Tip 1 要方法而不是记忆 我的一个程序员朋友常 ... -
你为什么薪水那么低(二):生产力
2012-10-22 12:57 4305在上一篇文章中提到,升薪的关键在于『你可以做别人做不了 ... -
为什么中国的程序员总被称为码农?
2012-09-28 08:10 2327今天在知乎看到这个问题。涛吴给出了一个答案,看完收益颇丰。编程 ... -
你为什么薪水那么低
2012-09-21 15:20 2972在SCDN回复了我的博客 ... -
程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
2012-09-20 09:48 14685始终认为,对一个 ... -
想成为最牛程序员吗?
2012-09-05 13:10 2383Tip 1 要方法而不是记忆 我的一个程序员朋友常跟我 ...
相关推荐
"信息平台和数据科学家的兴起" 本文主要讲述了信息平台和数据科学家的兴起,特别是 Facebook 工程师的一手工程实践经验。文章从作者的童年时代开始,讲述了他如何在图书馆学习大脑的工作原理,并将其与信息平台的...
信息平台和数据科学家的兴起 本文主要讨论了信息平台和数据科学家的兴起,以及作者在 Facebook 工程师的一手工程实践中所遇到的挑战和解决方案。作者通过分享自己的经历,介绍了大脑和图书馆作为信息库的角色,并...
数据科学家是近年来随着大数据时代的来临而兴起的一种新兴职业,他们在商业智能、决策支持和创新方面发挥着关键作用。这份2012年的秋叶语录报告深入探讨了数据科学家的角色、技能需求、行业趋势以及他们面临的挑战。...
这类用户,如数据分析师、数据科学家等专业角色,他们对企业的创新和战略规划具有重要影响,是推动企业数据分析能力提升的关键力量。 随着互联网技术的蓬勃发展,数据仓库技术也在不断演进。云数据仓库、实时数据...
数据科学是近年来兴起的一门学科,它通过收集、处理、分析大量复杂数据来揭示隐藏的信息和规律,为科研和实际应用提供有力支撑。在辐射肿瘤学领域,数据科学的应用包括但不限于: 1. **大数据分析**:利用机器学习...
先进的信息技术与科研设备相结合,例如遥感、高通量测序和超级计算机,使得科学家能够进行更精确、更快速的数据采集和处理。这些技术的进步使得科学研究的精度和深度都有所提升。 此外,ICT也影响了科学研究的组织...
此外,数据挖掘更多地依赖于计算机科学家而非统计学家的方法论。 **2. 模式识别** 数据挖掘技术的核心在于从数据中识别模式和规律,这与机器学习中的模式识别紧密相关。通过分析数据,数据挖掘算法能够自动识别出...
- **其他工具**:Python、SQL等也是数据科学家常用的工具之一。 #### 三、总结 通过对人工智能与数据科学的基础知识的学习,我们不仅可以了解到这些领域的历史背景和发展趋势,还能掌握基本的数学和统计学工具,为...
同时,数据科学家应具备良好的统计学基础和业务理解能力,以便将复杂的数据转化为易于理解的洞察。 总的来说,大数据分析的“道”与“术”相辅相成,理论指导实践,实践验证理论。在这个信息爆炸的时代,掌握大数据...
Hadoop MapReduce允许数据科学家处理PB级别的非结构化数据,如传感器数据、网络日志和社交媒体信息,这些数据传统数据库难以处理。Hadoop MapReduce的优点在于其可扩展性和容错性,适合大规模数据处理,但执行效率较...
通过这样的教育,学生将能应对大数据时代带来的各种挑战和机遇,成为能够引领行业发展、促进社会和经济进步的优秀数据科学家。随着大数据技术的不断进步,这些毕业生将为社会带来无限可能,并为大数据时代的创新和...
随着大数据技术的进一步发展,数据挖掘成为数据分析领域的一个重要方向,通过科学手段从数据中寻找规律和隐藏信息,进而对数据进行有效的分析和应用。 然而,大数据技术的发展同样带来了信息安全方面的挑战。由于...
在信息安全领域,数据安全是一个核心议题,尤其在模型的可重复性与风险(Reproducibility: The Life and Risks of a Model)这一主题上,安全专家和数据科学家必须深入考量。本文将基于给定文件标题、描述和部分内容...
- **新增大数据和数据科学:** 随着大数据和数据科学的兴起,这两个领域被纳入了指南之中。 - **数据管理成熟度评估:** 新增了数据管理成熟度评估方法,帮助企业了解自身数据管理的现状和发展水平。 - **数据管理...