董老师开讲了《大数据入门》2015.01.17 硅谷创业协会讲座笔记:
同学们好,今天的讲座主题是大数据入门,我的大纲如下
首先自我介绍一下,我叫董飞,目前在硅谷的一家做在线教育公司Coursera做数据工程师,之前本科南开大学毕业,加入创业公司酷迅,做实时信息检索,后来进入百度基础架构组,搭建了Baidu App Engine的早期版本,随后去杜克大学留学,攻读硕士期间,做跟Hadoop大数据相关的研究项目Starfish,之后在Amazon EC2部门实习,了解它们的内部架构,毕业后加入Linkedin,做广告组的架构,涉及Hadoop调优,Data Pipeline, 实时系统。在多年工作中,除了对技术的不懈追求,也积累了大量的面试经验,从国内的一线互联网百度,阿里巴巴,奇虎,到美国一线公司Facebook,Google,Linkedin,Twitter,到热门Startup,Uber,Pinterest,Airbnb,Dropbox,Snapchat,拿到10+ offer,并且在Linkedin期间,也积极参与面试过近200人,代表校园招聘,成为全公司前三的面试官,参与面试题制定,乐于分享并帮助很多人成功求职,实现目标。在知乎上写完关于技术,求职的几个帖子,引起强烈反响,
美国大数据工程师面试攻略有哪些?
知乎日报 哪些硅谷创业公司能给拜访者留下深刻印象?
Coursera上有哪些课程值得推荐?
在硅谷大家非常热情的谈创业谈机会,我也通过自己的一些观察和积累,看到了不少最近几年涌现的热门创业公司。
我给大家一个列表,这个是华尔街网站的全世界创业公司融资规模评选( http://graphics.wsj.com/billion-dollar-club/ )。它本来的标题是billion club,我在去年讲座也分享过,不到一年的时间,
截至到2015年1月17日,现在的排名和规模已经发生了很大的变化。 首先估值在10Billlon的达到了7家,而一年前一家都没有。第二第一名是中国人家喻户晓的小米,第三,前20名中,绝大多数(8成在美国,在加州,在硅谷,在旧金山!) 比如Uber, Airbnb, Dropbox, Pinterest. 第四 里面也有不少相似模式成功的,比如Flipkart就是印度市场的淘宝,Uber与Airbnb都是共享经济的范畴。所以大家还是可以在移动(Uber),大数据(Palantir),消费级互联网,通讯(Snapchat),支付(Square),O2O App里面寻找下大机会。这里面很多公司我都亲自面试和感受过他们的环境,我下面有机会也会一一给大家详细介绍。
在Linkedin,它每年评选一个最有需求的创业公司名单,基本上结合Linkedin用户访问量,申请数做出的挖掘。我这里列出了最近3年,大家可以做个判别和趋势分析,里面还是很大靠谱的,比如不少上榜名单已经成功IPO(GoPro. Hortonworks, Splunk),里面有很多大数据领域公司(Splunk, Box, Nimble Storage, Violin Memroy, Dropbox)除了之前看到的一些互联网项目,在一些医疗健康(theranos),智能硬件(leap motion, fitbit, Jawbone),在线教育(Coursera),也吸引了很大注意力。
看了那么多高估值公司,很多人都觉得非常疯狂,是不是很大泡沫了,泡沫是不是要破了,这是很多人的疑问。在硅谷这个充满梦想的地方,投资人鼓励创业者大胆去做同样也助长了泡沫,很多项目在几个月的时间就会估值翻2,3倍,如Uber,Snapchat上我也惊讶于他们的巨额融资规模。
那么这张图就是讲“新兴技术炒作”周期,把各类技术按照技术成熟度和期望值分类,这是硅谷创业孵化器YCombinator 课程How to start a startup( http://startupclass.samaltman.com/ )提到。创新萌芽Innovation Trigger”、“期望最顶点Peak ofInflated Expectation”、“下调预期至低点Trough of Disillusion”、“回归理想Slope ofEnlightenment”、“生产率平台Plateau of Productivity”,越往左,技术约新潮,越处于概念阶段;越往右,技术约成熟,约进入商业化应用,发挥出提高生产率的效果。纵轴代表预期值,人们对于新技术通常会随着认识的深入,预期不断升温,伴之以媒体炒作而到达顶峰;随之因技术瓶颈或其他原因,预期逐渐冷却至低点,但技术技术成熟后,期望又重新上升,重新积累用户,然后就到了可持续增长的健康轨道上来 。今年和去年的图对比显示,物联网、自动驾驶汽车、消费级3D打印、自然语言问答等概念正在处于炒作的顶峰。而大数据已从顶峰滑落,NFC和云计算接近谷底。
未来趋势是什么?大家都很关心。我先提一个最近看的一部电影《Imitation Game》,讲计算机逻辑的奠基者艾伦图灵(计算机届最高奖以他命名)艰难的一生,他当年为破译德军密码制作了图灵机为二战胜利作出卓越贡献,挽回几千万人的生命,可在那个时代因为同性恋被判化学阉割,自杀结束了短暂的42岁生命。他的一个伟大贡献就是在人工智能的开拓工作,他提出图灵测试(Turing Test),测试某机器是否能表现出与人等价或无法区分的智能。我们现在回到今天,人工智能已经有了很大进步,从专家系统到基于统计的学习,从支持向量机到神经网络深度学习,每一步都带领机器智能走向下一个阶梯。在Google资深科学家吴军博士(数学之美,浪潮之巅作者), 他提出当前技术发展三个趋势,第一,云计算和和移动互联网,这是正在进行时;第二,机器智能,现在开始发生,但对社会的影响很多人还没有意识到;第三,大数据和机器智能结合,这是未来时,一定会发生 ,有公司在做,但还没有太形成规模。他认为未来机器会控制98%的人,而现在我们就要做个选择,怎么成为剩下的2%?http://chuansong.me/n/1089215 李开复在2015年新年展望也提出未来五年物联网带来庞大创业机会。
大数据入门,我们做个思考,以前有个国王很阔绰也很爱排场,有天他很高兴想奖赏他的宠臣,然后说让他来提任何奖励,这个大臣给国王看下面这个棋盘,是个8*8的方格,如果我在每个标号的格子内放米粒,第一个格子放1粒米,后面的格子总是前面格子的两倍。那么问题来了,如果我把整个棋盘放满,需要多少米粒?我们学过级数的话,可以快速做个演算,它的推演是 1 + 2 + 4 … + 2^63 = 2^64 – 1 这个数字多大很多人没印象,反正如果真的要兑现的话,这个国家肯定是破产了。其实我把这个棋盘分成上下两半,在上一半总共需要的米粒是2^32, 这并不是个很大的数,其实前几年计算机的32位就是那么大,但下半场就完全不一样了,这是个平方级别的scale,我下面会给大家一个交代。现在大家也经常听到什么手机64位处理器,其实并无实际意义。
我们接着看这张曲线图是信息时代的增长,其实在工业革命之前(1820年),世界人均GDP在1800年前的两三千年里基本没有变化,而从1820年到2001年的180年里,世界人均GDP从原来的667美元增长到6049美元。由此足见,工业革命带来的收入增长的确是翻天覆地的。这里面发生了什么,大家可以去思考一下。但人类的进步并没有停止或者说稳步增长,在发明了电力,电脑,互联网,移动互联网,全球年GDP增长 从万分之5到2%,信息也是在急剧增长,根据计算,最近两年的信息量是之前30年的总和,最近10年是远超人类所有之前累计信息量之和。在计算机时代,有个著名的摩尔定律,就是说同样成本每隔18个月晶体管数量会翻倍,反过来同样数量晶体管成本会减半,这个规律已经很好的match了最近30年的发展,并且可以衍生到很多类似的领域:存储,功耗,带宽,像素。而下面这个是冯诺伊曼,20世纪最重要的数学家之一,在现代计算机、博弈论和核武器等诸多领域内有杰出建树的最伟大的科学全才之一。他提出(技术)将会逼近人类历史上的某种本质的奇点,在那之后 全部人类行为都不可能以我们熟悉的面貌继续存在。这就是著名的奇点理论。目前会越来越快指数性增长,美国未来学家Ray Kurzweil称人类能够在2045年实现数字化永生,他自己也创办奇点大学,相信随着信息技术、无线网、生物、物理等领域的指数级增长,将在2029年实现人工智能,人的寿命也将会在未来15年得到大幅延长。
我们在回到现在,地球上至今的数据量从GB,TB,PB,EB到达ZB,我们之前提出的2^64就相当于16EB的大小
大数据的用途,所谓学以致用,大数据领域在各个行业都可以应用,这里举出几个有趣的例子,在Linkedin的时候,CEO提出经济图谱的概念,希望整合用户,公司,工作机会,技能,学校,帖子变成一个复杂而有蕴含无限可能的数字化社会。找对象,有个国外的极客,他抓取了dating网站的数据,根据有些指标如地理,年龄,兴趣,建立下面的3D模型找到真爱;例如阿里巴巴通过数据魔方(它们的大数据产品),提炼出消费跟女生胸部成正比的结论。在移动App上,今日头条通过你的个人社会化信息,建立起兴趣图谱推荐文章并且随着你的使用会越来越聪明;在线教育领域:MOOC中的M就是大规模的意思;其他如互联网金融人人贷,通过大数据积累信用,释放一些传统金融体系下未被满足而又广泛存在的巨大需求,最近也是拿到1.3亿美金的融资。硅谷有家Wealthfront做大数据理财,23andMe提供个人基因组的“大数据“。等等
除了大数据,从另一个微观角度如何看小,这就像相对论和量子力学,Google院士Jeff Dean给出了一些非常基本,但也是学计算机需要掌握的数字。在计算机体系结构里有个局部性原理(Locality)越往上的就越快,当然代价就是非常珍贵,从寄存器到CPU L2 Cache, 从内存到Flash到磁盘到网络,从连续读到随机读,它们的速率都是相差数量级的。
这是2014年别人总结的Big Data公司列表,我们大致可以分成基础架构和应用,而底层都是会用到一些通用技术,如Hadoop,Mahout,HBase,Cassandra,我在下面也会涵盖。我可以举几个例子, 在分析这一块,cloudera,hortonworks,mapr作为Hadoop的三剑客,一些运维领域,mangodb,couchbase都是nosql的代表,作为服务领域AWS和Google BigQuery剑拔弩张,在传统数据库,Oracle收购了MySQL,DB2老牌银行专用,Teradata做了多年数据仓库。 上面的Apps更多,比如社交消费领域Google, Amazon, Netflix, Twitter, 商业智能:SAP,GoodData,一些在广告媒体领域:TURN,Rocketfuel,做智能运维sumologic等等。最后还有个去年的新星 Databricks 伴随着Spark的浪潮震撼Hadoop的生态系统 。
对于迅速成长的中国市场,大公司也意味着大数据,BAT三家都是对大数据的投入也是不惜余力,我4年前在Baidu的的时候,就提出框计算的东东,最近两年成立了硅谷研究院,挖来Andrew Ng作为首席科学家,研究项目就是百度大脑,在语音,图片识别大幅提高精确度和召回率,最近还做了个无人自行车非常有趣。腾讯作为最大的社交应用对大数据也是情有独钟,自己研发了C++平台的海量存储系统。淘宝去年双十一主战场,2分钟突破10亿,交易额突破571亿,背后是有很多故事,当年在百度做Pyramid(按Google三辆马车打造的金字塔三层分布式系统)有志之士,继续在OceanBase创造神话。而阿里云当年备受争议,马云也怀疑是不是被王坚忽悠,最后经历了双十一的洗礼证明了OceanBase和阿里云的靠谱。小米的雷军对大数据也是寄托厚望,一方面这么多数据几何级数增长,另一方面存储带宽都是巨大成本,没价值就真破产。
大数据相关技术,最紧密的就是云计算,我列出主要是Amazon Web Service和Google Cloud Platform,在国内还有阿里云,金山云,百度云,腾讯云,小米云,360云,七牛。。每个里面都是大量技术文档和标准,从计算到存储,从数据库到消息,从监控到部署管理,从虚拟网络到CDN,把所有的一切用软件重新定义了一遍。
我本人在Amazon 云计算部门工作过,所有还是比较了解AWS,总体上成熟度很高,有大量startup都是基于上面开发,比如有名的Netflix,Pinterest,Coursera。Amazon还是不断创新,每年召开reInvent大会推广新的云产品和分享成功案例,在这里面我随便说几个,像S3是简单面向对象的存储,DynamoDB是对关系型数据库的补充,Glacier对冷数据做归档处理,Elastic MapReduce直接对MapReduce做打包提供计算服务,EC2就是基础的虚拟主机,Data Pipeline 会提供图形化界面直接串联工作任务。
这边还可以说一下Redshift,它是一种(massively parallel computer)架构,是非常方便的数据仓库解决方案,就是SQL接口,跟各个云服务无缝连接,最大特点就是快,在TB到PB级别非常好的性能,我在工作中也是直接使用,它还支持不同的硬件平台,如果想速度更快,可以使用SSD的,当然支持容量就小些。
在数据库领域,我就列出三种代表,一类是关系型数据库管理系统,它的特点是A(Atomic), C(consistent), I(isolation), D(duration), 连起来就是ACID(酸) 简单说就是支持事务回滚和外键关联。而NoSQL是与之对应的Base(碱),所谓Basic 可用,为了扩大Scale,牺牲一些一致性和事务。而Google提出F1,希望解决在大规模数据的同时还要做到事务强一致性。在这里面都是非常常见的NoSQL, 这些公司可能你都没听过,但它们都是融资过亿,估值都非常高,在几个billion以上。
我会花一些篇幅介绍Hadoop,首先看Hadoop从哪里开始的,不得不提Google的先进性,在10多年前,Google出了3篇paper论述分布式系统的做法,分别是GFS, MapReduce, BigTable,非常NB的系统,但没人见过,在工业界很多人痒痒的就想按其思想去仿作,当时Apache Nutch Lucene的作者Doug Cutting也是其中之一,后来他们被Yahoo收购,专门成立Team去投入做,就是Hadoop的开始和大规模发展的地方,之后随着Yahoo的衰落,牛人去了Facebook, Google, 也有成立了Cloudera, Hortonworks等大数据公司,把Hadoop的实践带到各个硅谷公司。而Google还没有停止,又出了新的三辆马车,Pregel, Caffeine, Dremel, 后来又有很多步入后尘,开始新一轮开源大战。
那么为啥Hadoop就比较适合做大数据呢?首先扩展很好,直接通过加节点就可以把系统能力提高,它有个重要思想是移动计算而不是移动数据,因为数据的移动是很大的成本需要网络带宽。其次它提出的目标就是利用廉价的普通计算机(硬盘),这样虽然可能不稳定(磁盘坏的几率),但通过系统级别上的容错和冗余达到高可靠性。并且非常灵活,可以使用各种data,二进制,文档型,记录型。使用各种形式(结构化,半结构化,非结构化所谓的schemaless),在按需计算上也是个技巧。
另一个问题, 我们提到Hadoop一般不会说某一个东西,而是指生态系统,在这里面太多交互的组件了,涉及到IO,处理,应用,配置,工作流。在真正的工作中,当几个组件互相影响,你的头疼的维护才刚刚开始。我也简单说几个:Hadoop Core就三个HDFS,MapReduce,Common,在外围有NoSQL: Cassandra, HBase, 有Facebook开发的数据仓库Hive,有Yahoo主力研发的Pig工作流语言,有机器学习算法库Mahout,工作流管理软件Oozie,在很多分布式系统选择Master中扮演重要角色的Zookeeper。
这是Hortonworks提出的data platform,这个公司比较强势,它有最多的Hadoop committee成员,是真正的标准制定者。而2。0就是由它们提出。在Hadoop 1。0之前,是0.16到0.19,0.20,还有一只是0。23进化成现在的2。0,应该说现在大致都是被2。0取代了。主要区别是 1.0只能支持MapReduce框架,资源和数据处理限制在一起。而2。0首先抽象出Yarn这个资源管理器,然后上层可以支持各种插件机制,便于扩展,Hortonworks还研发了Tez作为加速引擎把一些相关任务合并共享或者并行来优化。
这个是Intel给出的Hadoop Stack,Intel也是个对技术前沿由追求的公司,虽然它主业是处理器,但在互联网的时代,为了抓住一些软件机会,它们也在积极融合,为生态系统做贡献。
Cloudera是老牌Hadoop公司,成立了7,8年了,当年的Hadoop之父就是在那做首席架构,它提出的CDH版本是很多公司的稳定Hadoop版本,一般公司也不会自己去搭Hadoop最新版,否则出了Bug会很痛苦,它提供了一个打包方便部署。
下面的内容涉及技术细节甚至源代码,可能有些枯燥,我也尽量深入浅出。我们先说HDFS,所谓Hadoop的分布式文件系统,它是能真正做到高强度容错。并且根据locality原理,对连续存储做了优化。简单说就是分配大的数据块,每次连续读整数个。如果让你自己来设计分布式文件系统,在某机器挂掉还能正常访问该怎么做?首先需要有个master作为目录查找(这里就是Namenode),那么数据节点是作为分割好一块块的,同一块数据为了做备份不能放到同一个机器上,否则这台机器挂了,你备份也同样没办法找到。HDFS用一种机架位感知的办法,先把一份拷贝放入同机架上的机器,然后在拷贝一份到其他服务器,也许是不同数据中心的,这样如果某个数据点坏了,就从另一个机架上调用,而同一个机架它们内网连接是非常快的,如果那个机器也坏了,只能从远程去获取。这是一种办法,现在还有基于erasure code本来是用在通信容错领域的办法,可以节约空间又达到容错的目的,大家感兴趣可以去查询。
接着说MapReduce,首先是个编程范式,它的思想是对批量处理的任务,分成两个阶段,所谓的Map阶段就是把数据生成key, value pair, 再排序,中间有一步叫shuffle,把同样的key运输到同一个reducer上面去,而在reducer上,因为同样key已经确保在同一个上,就直接可以做聚合,算出一些sum, 最后把结果输出到HDFS上。对应开发者来说,你需要做的就是编写Map和reduce函数,像中间的排序和shuffle网络传输,容错处理,框架已经帮你做好了。但据说google内部早不用这种,又有新的强大工具出现了。
HBase 就是对应的BigTable的克隆版,它是基于列的存储,可以很好的扩展型,这里面出现了Zookeeper作为它高可靠性的来源,我们在分布式系统中经常怕Single Point of Failure,它能保证在少于一半节点损害情况下,还是可以工作的。这里的region server是说把数据的key做范围的划分,比如region server1负责key从1到1w的,region server2负责1w到2w的,这样划分之后就可以利用分布式机器的存储和运算能力了。
虽然MapReduce强大,但编写很麻烦,在一般的工作中大家不会直接写MapReduce程序。有人又开动大脑,简化开发。Hive的简单介绍,它主要是Facebook开发,确实很容易上手,如果做data scientist,经常也要用到这个工具
我们还是看个基本的例子,看看到底怎么写Hadoop的代码,每个编程语言都有个hello world的版本,对应的Hadoop就是Word Count。需求很简单,就是为文档中的每个单词统计词频,当然这个文档如果很小,用PC上Linux命令就可以做到,问题是如果是1Billion以上的文本呢?单机无法装的下。这时候典型的思路就是分而治之:先对每个文档片段做个Map,生成单词到频率(1)的对应,然后把同样单词(key)送入到同一个reducer上面去,最后每个reducer加一下就拿到最后结果,是不是很简单?
好,我们分别看下Java/Hive/Pig的版本,总体上Hive最精炼。
我们想MapReduce模型有什么问题?第一:需要写很多底层的代码不够高效,第二:所有的事情必须要转化成两个操作,这本身就很奇怪,也不能解决所有的情况。那么下面就看看有么有什么可以做的更好的
我还是介绍一些Spark的起源。发自 2010年Berkeley AMPLab,发表在hotcloud 是一个从学术界到工业界的成功典范,也吸引了顶级VC:Andreessen Horowitz的 注资 AMPLab这个实验室非常厉害,做大数据,云计算,跟工业界结合很紧密,之前就是他们做mesos,hadoop online, 在2013年,这些大牛(Berkeley系主任,MIT最年轻的助理教授)从Berkeley AMPLab出去成立了Databricks,引无数Hadoop大佬尽折腰,其实也不见得是它们内心这么想,比如Cloudera也有自家的impala,支持Spark肯定会让它自家很难受,但如果你的客户强烈要求你支持,你是没有选择的。另外起名字也很重要,Spark就占了先机,它们CTO说Where There’s Spark There’s Fire。它是用函数式语言Scala编写,Spark简单说就是内存计算(包含迭代式计算,DAG计算,流式计算 )框架,之前MapReduce因效率低下大家经常嘲笑,而Spark的出现让大家很清新。 Reynod 作为Spark核心开发者, 介绍Spark性能超Hadoop百倍,算法实现仅有其1/10或1/100。
为啥用Spark,最直接的就是快啊,你用Hadoop跑大规模数据几个小时跑完,这边才几十秒,这种变化不仅是数量级的,并且是对你的开发方式翻天覆地的变化,比如你想验证一个算法,你也不知道到底效果如何,但如果能在秒级就给你反馈,你可以立马去调节。其他的如比MapReduce灵活啊,支持迭代的算法,ad-hoc query, 不需要你费很多力气花在软件的搭建上。如果说你用Hadoop的组建集群,测试,部署一个简单任务要1周的时间,Spark可能只要一天。在去年的Sort benchmark上,Spark用了23min跑完了100TB的排序,刷新了之前Hadoop保持的世界纪录。
下面这个是跟Hadoop跟Spark在回归算法上比较,在Hadoop的世界里,做迭代计算是非常耗资源,它每次的IO 序列画代价很大,所以每次迭代需要差不多的等待。而Spark第一次启动需要载入到内存,之后迭代直接在内存利用中间结果做不落地的运算,所以后期的迭代速度快到可以忽略不计。
Spark也是一个生态系统,除了核心组建Spark,它也是可以跑在Hadoop上面,而它还提供了很多方便的库,比如做流式计算,Spark Streaming,比如GraphX做图的运算,MLBase做机器学习,Shark类似Hive,BinkDB也很有意思,为了达到高效,它允许你提供一个误差概率,如果你要求的精确度越低,它的运算速度就越快,在做一些模糊计算时像twitter的follower数目,可以提高效率。
所以总体来说,Spark是一个非常精炼的API,它提供常用的集合操作,然后本身可以独立运行,或者在Hadoop Yarn上面,或者Mesos,而存储也可以用HDFS,做到了兼容并包,敏捷高效。是不是会取代Hadoop或者成为Hadoop的下一代核心,我们拭目以待!
说到一些工业实践,我可以拿Linkedin举例子, 在Linkedin,有很多数据产品,比如People you may like, job you may be interested, 你的用户访问来源,甚至你的career path都可以挖掘出来 。那么在Linkedin也是大量用到开源技术,我这里就说一个最成功的Kafka,它是一个分布式的消息队列,可以用在tracking,机器内部metrics,数据传输。数据在前端后端会经过不同的存储或者平台,每个平台都有自己的格式,如果没有一个unified log,会出现灾难型的O(m*n)的数据对接复杂度,如果你设定的格式一旦发生变化,也是要修改所有相关的。所以这里提出的中间桥梁就是Kafka,大家约定用一个格式作为传输标准,然后在接受端可以任意定制你想要的数据源(topics),最后实现的线性的O(m+n)的复杂度。对应的设计细节,还是要参考设计文档 http://kafka.apache.org/ 这里面主要作者Jay Kreps,Rao Jun 出来成立了Kafka作为独立发展的公司。
在Linkedin,Hadoop作为批处理的主力,大量应用在各个产品线上,比如广告组。我们一方面需要去做一些灵活的查询分析广告主的匹配,广告预测和实际效果,另外在报表生成方面也是Hadoop作为支持。如果你想去面试Linkedin 后端组,我建议大家去把Hive, Pig, Azkaban(数据流的管理软件),Avro 数据定义格式,Kafka,Voldemort 都去看一些设计理念,linkedin有专门的开源社区,也是build自己的技术品牌。 http://data.linkedin.com/
那同学们如果问如何开始学习大数据,我也有一些建议,首先还是打好基础,Hadoop虽然是火热,但它的基础原理都是书本上很多年的积累,像Unix设计哲学,数据库的原理,这里也推荐了一些重量级的书可以参考。其次是选择目标,如果你像做数据科学家,我可以推荐coursera的data science课程,通俗易懂https://www.coursera.org/specialization/jhudatascience/1
学习Hive,Pig这些基本工具,如果做应用层,主要是把Hadoop的一些工作流要熟悉,包括一些基本调优,如果是想做架构,除了能搭建集群,对各个基础软件服务很了解,还要理解计算机的瓶颈和负载管理,Linux的一些性能工具。最后还是要多加练习,大数据本身就是靠实践的,你可以先按API写书上的例子,能够先调试成功,在下面就是多积累,当遇到相似的问题能找到对应的经典模式,再进一步就是实际问题,也许周边谁也没遇到,你需要些灵感和网上问问题的技巧,然后根据实际情况作出最佳选择。
这边列出一些参考资料,比如数据库系统,Hadoop 最经典的the definitive guide, 我在知乎上也有分享http://www.zhihu.com/question/23655827/answer/29611595
还有一些科普或者管理书籍不错我都一并推荐。
我的联系方式和最后的话,谢谢!
本文来自董飞投稿。
End.